我正在从不可复制的基类构造派生类。我想在初始化程序Base
中聚合初始化:
// for convenience, could be any other way to disable copy
#include<boost/noncopyable.hpp>
struct Base: public boost::noncopyable{
int a;
};
struct Derived: public Base{
Derived(int a): Base{a} {}
};
但我得到:
error: could not convert ‘a’ from ‘int’ to ‘boost::noncopyable_::noncopyable’
据我了解,noncopyable
无法初始化,足够公平。然后我可以以某种方式制作聚合初始化程序以便跳过不可复制的初始化吗?(我尝试了例如Base{{},a}
没有真正理解的事情,但这也不起作用:~noncopyable
受保护)。
或者我是否需要明确定义Base::Base
哪个会跳过noncopyable
初始化,使用它Derived::Derived
而不是聚合初始化?