C++11 在另一个“std::array”中使用“std::array”大小`

C++11 在另一个“std::array”中使用“std::array”大小`,c++11,c++17,C++11,C++17,我在代码的一部分中定义了一个std::array std::array<int, 303> data; 基本上,我希望使用数据中的信息,而不是使用相同的常量。 但它无法使用-std=c++11编译。 有可能吗?如果有,最好的方法是什么?您可以从sizeof计算元素计数 sizeof(data)/sizeof(data[0]) 您的代码正常,编译时没有问题:。不需要,data不需要是常量,因为std::array::size是const-constexpr: 这应该适用于C++11

我在代码的一部分中定义了一个
std::array

std::array<int, 303> data;
基本上,我希望使用
数据中的信息,而不是使用相同的常量。
但它无法使用
-std=c++11
编译。
有可能吗?如果有,最好的方法是什么?

您可以从sizeof计算元素计数

sizeof(data)/sizeof(data[0])

您的代码正常,编译时没有问题:。不需要,
data
不需要是常量,因为
std::array::size
const-constexpr

这应该适用于
C++11
。您会收到什么错误消息?
error:调用非constexpr函数'std::array::size\u type std::array::size()const[with Tp=row;long unsigned int\u Nm=303;std::array::size\u type=long unsigned int]
就好像
size()
不是
常量一样。只有当
data
const
时,它才会工作吗?好的,我发现了我的问题:在我的代码中,
data
在头文件中声明为
extern
。但是,<代码>其他数据> <代码>的声明仅在<代码>数据< /代码>是<代码> const 时工作。这是不安全的,容易出错的,也是现代C++中的反模式。
sizeof(data)/sizeof(data[0])