gpt4 book ai didi

c++ - 为什么 std::size() 不是 gcc 8.2.0 中的 std 成员

转载 作者:行者123 更新时间:2023-11-30 02:16:15 26 4
gpt4 key购买 nike

我正在尝试自学一些 C++17。

为什么编译器会针对以下代码片段抛出错误?

#include <iostream> 
#include <vector>
#include <iterator>

int main()
{
std::vector<int> v = { 3, 1, 4 };
std::cout << std::size(v) << '\n';

int a[] = { -5, 10, 15 };
std::cout << std::size(a) << '\n';
}

编译器抛出如下错误

manish@Manish-Tummala:~/c_files$ g++ 6.cpp -o - 6.out
6.cpp: In function ‘int main()’:
6.cpp:8:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(v) << '\n';
^~~~
6.cpp:8:23: note: suggested alternative: ‘size_t’
std::cout << std::size(v) << '\n';
^~~~
size_t
6.cpp:11:23: error: ‘size’ is not a member of ‘std’
std::cout << std::size(a) << '\n';
^~~~
6.cpp:11:23: note: suggested alternative: ‘size_t’
std::cout << std::size(a) << '\n';
^~~~
size_t

最佳答案

GCC对C++17的支持,请引用:

C++17 编译模式是 GCC 11.1 开始的默认模式。在早期的 GCC 版本中,可以使用命令行参数启用:

To enable C++17 support, add the command-line parameter -std=c++17 to your g++ command line. Or, to enable GNU extensions in addition to C++17 features, add -std=gnu++17.

请注意,对于 GCC 9.1 之前的 GCC 版本,C++ 库 ABI 仍被认为是不稳定的,因此如果您使用较早的编译器构建和链接您的应用程序,它可能无法与不同的 libstdc++ 运行时库版本(来自不同的 GCC 版本,例如由操作系统升级引入)。

关于c++ - 为什么 std::size() 不是 gcc 8.2.0 中的 std 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55194309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com