为什么从基类继承构造函数会破坏聚合初始化?
例如,这样可以工作:
但是这个不起作用:
例如,这样可以工作:
struct MyArray : std::array<int, 2ul> {};
MyArray a{1, 2};
但是这个不起作用:
struct MyArray : std::array<int, 2ul>
{
using std::array<int, 2ul>::array;
};
MyArray a{1, 2};
MyArray a{1, 2};
是聚合初始化还是对(继承的)构造函数进行重载决议呢? - user17732522std::array
没有构造函数。using std::array<int, 2ul>::array;
有任何意义吗? - user4581301std::array
拥有一个隐式生成的构造函数。 - TheScorestd::array
具有隐式默认、复制和移动构造函数。 - Ayxan Haqverdiliinitializer_list
的构造函数,因此在一般情况下它并不无用,但在这里是无用的。我想知道不继承构造函数规则的基本原理是什么,是因为继承构造函数很难与用户定义的构造函数区分开来还是不能轻易地区分开来。 - user4581301