为什么下面的C++代码无法编译?
例如,MSVC会给出以下错误:
#include <utility>
int main() {
int x[6];
int y[6];
std::pair<int[6], int[6]> a(x, y);
return 0;
}
例如,MSVC会给出以下错误:
谢谢您的评论,说明使用C++替代构造数组的方式,但我也想知道代码无法编译的原因。error C2661: 'std::pair<int [6],int [6]>::pair': 没有重载函数使用 2 个参数
std::array<int,6>
代替c数组:https://ideone.com/eEKplR - drescherjmint[6]
确实是一种类型。 - Ben Voigtint*
。这意味着int* != int[6]
。你应该使用std::array<int,6>
或自己将其包装到结构体中。 - Raildexa
和b
是数组,则不能写成a = b;
)。这使得在模板(和许多其他地方)中使用它们变得棘手。 - john