2
g ++ 버그입니까?상속하는 생성자가 배열과 같은 초기화를 허용하지 않습니다.
#include <array>
struct inherit : std::array<int , 3>{
using std::array<int , 3>::array;
};
std::array<int, 3> ok1 = {1,2,3};
inherit ok2;
inherit bad = {1,2,3};
bad
인스턴스화, 나는 error: could not convert ‘{1, 2, 3}’ from ‘<brace-enclosed initializer list>’ to ‘inherit’
를 얻을. 그것은 나에게 절대적으로 옳은 것처럼 보입니다.
'std :: array'에 암시 적으로 선언 된 생성자가있는 경우 초기화 할 클래스의 생성자를 명시 적으로 정의해야합니다. 따라서 구성은 집계 초기화를 사용합니다. 집계는 기본 클래스를 가질 수 없으므로'inherit'은 집계가 아니므로 집계 초기화를 사용할 수 없습니다. –
집계 초기화에 대한 링크가 있습니다. http://en.cppreference.com/w/cpp/language/aggregate_initialization – yinqiwen