2
這是一個g ++的bug嗎?繼承構造函數不允許類似數組的初始化
#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'不是聚合,因此不能使用聚合初始化。 – 2014-03-04 02:42:31
有一個鏈接在談論聚合初始化。 http://en.cppreference.com/w/cpp/language/aggregate_initialization – yinqiwen