gpt4 book ai didi

c++ - 为什么我需要像临时构造这样的复合文字来初始化我的 std::array 成员?

转载 作者:太空宇宙 更新时间:2023-11-04 15:48:47 25 4
gpt4 key购买 nike

考虑这个最小的例子:

#include <array>
struct X {
std::array<int,2> a;
X(int i, int j) : a(std::array<int,2>{{i,j}}) {}
// ^^^^^^^^^^^^^^^^^^ ^
};

根据 other posts在这种情况下,我不应该明确地构建一个临时的。我应该能够写:

  X(int i, int j) : a{{i,j}} {}

但是这个版本和我试过的其他几个(类似的)版本都被我的(公认的很旧的)g++ 4.5.2 拒绝了。我目前只有那个用于实验。它说:

error: could not convert ‘{{i, j}}’ to ‘std::array<int, 2ul>’

这是编译器实现的限制还是发生了什么?

最佳答案

很多时候,问题是编译器版本。以下代码适用于 GCC 4.7.1:

#include <array>

struct X{
std::array<int, 2> a;
X() : a{{1,2}} {}
};

int main(){
X x;
}

Live example.

关于c++ - 为什么我需要像临时构造这样的复合文字来初始化我的 std::array 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308389/

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