중첩 된 (2D) std::array
을 이니셜 라이저 목록을 통해 초기화하는 방법은 무엇입니까?2D std :: array 멤버를 초기화하기위한 초기화리스트 -
template <std::size_t W, std::size_t H>
class Block
{
std::array<std::array<int, W>, H> block;
public:
template <typename ...E>
Block(E&&...e) : block {{std::forward<E>(e)...}} {}
};
클래스 Block
해야 아래 block
멤버를 초기화 할 수 :
Block<3, 2> b {{ {1, 2, 3}, {4, 5, 6} }};
참고 :
std::array<std::array<int, 3>, 2> b {{ {1, 2, 3}, {4, 5, 6} }};
: 우리는 C++ (11)에 직접
std::array
를 초기화 할 수있는 능력을 가지고
gcc-4.9.0을 사용하고 있습니다.
개인 block'과의 ctor,'Block' 지금 외설을 '제공 더 이상 집합체가 아니다. braced-initializers가 결코 추론되지 않으므로'Block <3,2>'유형의 객체에 대해 초기화 된 유일한 유효한 객체는'Block <3,2> b {1,2,3,4,5,6}' – dyp
입니다. 답변에 의미가있는 경우 새로운 질문을하십시오. – Shog9