0
std::move_if_noexcept
定義如下(C++ 11 20.2.3/7-8):什麼是移動操作可移動的移動類的例子?
template <class T>
typename conditional<!is_nothrow_move_constructible<T>::value
&& is_copy_constructible<T>::value,
const T&,
T&&
>::typemove_if_noexcept(T& x) noexcept;
Returns: std::move(x)
在普通的英語,move_if_noexcept(x)
蒙上x
到一個rvalue如果x
的舉動構造方法不拋出或如果x
不可複製構造。這讓我想知道是否有任何通常可用的類型不可複製,但其移動構造函數可能會拋出。
標準庫,我已經簽了不可複製的類型unique_ptr
,future
,promise
,各種互斥體類型,unique_lock
,condition_variable
和packaged_task
,並且,除非我誤讀了標準,他們都宣稱他們的移動操作noexcept
。
標準庫(C++ 11或C++ 14)或移動操作可能拋出的常用第三方庫(例如Boost)中是否存在移動類型?
矢量是否算? – 2014-01-31 07:15:41
@remyabel:矢量是可複製的。 – KnowItAllWannabe