struct B {
B(int) {}
B(B const&) {}
};
struct D: B {
using B::B;
};
int main(void) {
B b(5);
D d(b); // error
return 0;
}
c++14 从 12.9 [class.inhctor]/p3 中的继承构造函数中明确排除了复制/移动构造函数。
对于候选继承构造函数集中的每个非模板构造函数,除了没有参数的构造函数或具有单个参数的复制/移动构造函数,构造函数被隐式声明为具有相同的构造函数特征,除非用户声明的构造函数具有使用声明出现的完整类中的相同签名或构造函数将是该类的默认、复制或移动构造函数。
但是我在 c++17 中找不到任何详细的描述。clang/gcc 显示基类的复制/移动构造函数不是继承的。有人可以提供标准中解释的地方吗?谢谢。