C++ 命名要求: CopyConstructible
指定类型的实例可以从左值表达式复制构造。
要求
如果满足以下条件,则类型 T 满足 CopyConstructible:
- 类型 T 满足 MoveConstructible,并且
给定
以下表达式必须有效并具有其指定的效果
pub | 表达式 | 后置条件 |
pub | T u = v; | u 的值等同于 v 的值。 v 的值未改变。 |
pub | T(v) | T(v) 的值等同于 v 的值。 v 的值未改变。 |
表达式 v.~T()
也必须有效,并且对于左值 v
,表达式 &v
必须具有 T*
或 const T*
类型,并且必须求值为 v
的地址。 (直到 C++11)
备注
重载 operator& 的类不符合 CopyConstructible,因此不能在标准库容器中使用。这是 C++98 中的一个设计决策(而不是缺陷,参见LWG issue 390)。 (直到 C++11)
当需要对象的地址时,标准库使用 std::addressof。 (自 C++11 起)