std :: array中元素构造函数的参数

时间:2015-02-25 11:03:17

标签: templates c++11

以下按预期打印“1 \ n 1 \ n 1”。我可以用它打印“2 \ n 2 \ n 2”的方式构造“ar”而不给它一个明确的初始化列表(... ar = {A(2),A(2),A(2) })?

#include <iostream>
#include <array>

class A {

public:
    A(int i=1) : m_i(i) {};
    int m_i;
};

int main() {

    std::array<A, 3> ar;

    for(auto& v : ar) {
        std::cout << v.m_i << std::endl;
    }

}

1 个答案:

答案 0 :(得分:1)

不是真的; array没有任何有趣的构造函数,例如vector的{​​{1}}。

最接近的是使用vector(size_type, T = T()),可能使用初始化lambda:

fill