【发布时间】:2015-02-17 13:48:15
【问题描述】:
N4296::12.8/11 [class.copy] 告诉我们以下内容:
类 X 的默认复制/移动构造函数被定义为已删除 (8.4.3) 如果 X 有:
[...]
(11.2) — 可能构造的子对象类型 M(或其数组) 无法复制/移动,因为重载决议(13.3),如 应用于 M 的相应构造函数,导致歧义或 从默认设置中删除或无法访问的功能 构造函数
[...]
所以不清楚为什么是这个程序
struct X
{
};
struct Y
{
X&& x;
Y(Y const&)= default;
};
int main() { }
工作正常,但以下内容:
struct X
{
};
struct Y
{
X&& x;
Y(Y const&);
};
Y::Y(Y const&)= default; //error
int main() { }
【问题讨论】:
标签: c++ class constructor