【发布时间】:2018-06-28 17:47:17
【问题描述】:
灵感来自this 问题。
struct E {};
E e;
E f(e); // Accesses e?
致access是致
读取或修改对象的值
空类有一个implicitly defined copy constructor
非联合类
X的隐式定义的复制/移动构造函数执行其基类和成员的成员复制/移动。 [...] 初始化顺序与用户定义的构造函数中基和成员的初始化顺序相同。让x是构造函数的参数,或者对于移动构造函数,是引用参数的xvalue。每个基本或非静态数据成员都以适合其类型的方式复制/移动:
- [...] 基址或成员直接使用
x的相应基址或成员进行初始化。
【问题讨论】:
-
@YSC
*pe的评价本身就是UB,所以没有。 -
假设
sizeof(E)是1;我希望复制 1 个字节。即使它完全未使用(这将被视为读取) -
@UKMonkey 但是复制构造函数看起来像是定义为什么都不做,单个字节可能被认为是填充
-
@Quentin 不,不是。我们(语言律师)进行了讨论。但是,将引用绑定到空左值是未定义的,当然。
-
@Columbo 是吗?有没有我可以关注的链接?
标签: c++ language-lawyer