C++ 编译器生成移动的实现

C++ 编译器生成移动的实现,c++,c++11,move-semantics,C++,C++11,Move Semantics,编译器如何实现隐式编译器生成的move构造函数和move assigment运算符 编译器是将复制和交换习惯用法与统一的运算符=(具有强大的异常安全保证)一起使用,还是实现了成员方式的移动?这是成员方式的移动,就像隐式定义的复制操作执行成员方式的复制一样。见12.8[类别副本]第15和25段 复制和交换对于不可复制类型或不可交换类型是不可能的,您不希望移动操作依赖于另一个特殊成员或可能不存在或可能无法按要求工作的swap成员 编译器是使用带有统一运算符=(具有强大的异常安全保证)的复制和交换习惯

编译器如何实现隐式编译器生成的move构造函数和move assigment运算符


编译器是将复制和交换习惯用法与统一的
运算符=
(具有强大的异常安全保证)一起使用,还是实现了成员方式的移动?

这是成员方式的移动,就像隐式定义的复制操作执行成员方式的复制一样。见12.8[类别副本]第15和25段

复制和交换对于不可复制类型或不可交换类型是不可能的,您不希望移动操作依赖于另一个特殊成员或可能不存在或可能无法按要求工作的
swap
成员

编译器是使用带有统一运算符=(具有强大的异常安全保证)的复制和交换习惯用法,还是实现了成员级移动

根据C++11标准第12.8/15段:

非联合类X的隐式定义的复制/移动构造函数执行其基和成员的成员式复制/移动。[……]

此外,根据第12.8/28段:

非联合类X的隐式定义的复制/移动赋值运算符执行成员复制- /移动其子对象的指定。[……]