2014-01-31 28 views
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_ptrfuturepromise,各種互斥體類型,unique_lockcondition_variablepackaged_task,並且,除非我誤讀了標準,他們都宣稱他們的移動操作noexcept

標準庫(C++ 11或C++ 14)或移動操作可能拋出的常用第三方庫(例如Boost)中是否存在移動類型?

+0

矢量是否算? – 2014-01-31 07:15:41

+0

@remyabel:矢量是可複製的。 – KnowItAllWannabe

回答