std::experimental::propagate_const<T>::propagate_const
来自cppreference.com
| |
(1) | (库基础 TS v2) |
| |
(2) | (库基础 TS v2) |
| |
(3) | (库基础 TS v2) |
| |
(4) | (库基础 TS v2) |
| |
(5) | (库基础 TS v2) |
令 t_ 指代私有数据成员,即被包装的指针式对象。
1) 构造
propagate_const,默认初始化 this->t_。2) 显式预置的移动构造函数,从
p.t_ 移动构造 this->t_。3) 如同以直接非列表初始化,从表达式
此构造函数仅当
std::move(pu.t_) 初始化 this->t_。此构造函数仅当
std::is_constructible<T, U>::value 为 true 时才参与重载决议,当且仅当 std::is_convertible<U, T>::value 为 false 时才为 explicit。
4) 如同以直接非列表初始化,用表达式
此构造函数仅当
std::forward<U>(u) 初始化 this->t_ 。此构造函数仅当
std::is_constructible<T, U>::value 为 true 而 std::decay_t<U> 不是 propagate_const 的特化时才参与重载决议。此构造函数当且仅当 std::is_convertible<U, T>::value 为 false 才为 explicit。
5) 复制构造函数被显式弃置。
propagate_const 不可复制。参数
| p | - | 要移动的另一 propagate_const 对象
|
| pu | - | 要移动的另一不同特化的 propagate_const 对象
|
| u | - | 用来初始化所含指针的另一对象 |
注解
在库基础 TS v2(基于 C++14)中,(4) 与 (5) 常以 explicit/非 explicit 重载对实现。从库基础 TS v3(基于 C++20)起,它们能以条件性 explicit 说明符实现。