分享方式:


add_rvalue_reference 類別

如果範本參數是物件或函式類型,請建立其右值參考類型。 否則,基於參考摺疊的語意,類型會與範本參數相同。

語法

template <class T>
struct add_rvalue_reference;

template <class T>
using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;

參數

T
要修改的類型。

備註

類別 add_rvalue_reference 具有名為 type 的成員,這是樣板參數 T 之右值參考類型的別名。參考折迭的語意表示,對於非物件和非函式類型 T 而言, T&& T 。例如,當 T 是左值參考型別時 add_rvalue_reference<T>::type 是左值參考類型,而不是右值參考。

為了方便起見, < type_traits > 定義協助程式範本 , add_rvalue_reference_t 該範本會為 type 的成員 add_rvalue_reference 別名。

範例

這個程式碼範例使用 static_assert 顯示如何使用 add_rvalue_referenceadd_rvalue_reference_t 建立右值參考類型,以及左值參考類型上 add_rvalue_reference的結果不是右值參考,但摺疊到左值參考類型。

// ex_add_rvalue_reference.cpp
// Build by using: cl /EHsc /W4 ex_add_rvalue_reference.cpp
#include <type_traits>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    static_assert(is_same<add_rvalue_reference<string>::type, string&&>::value,
        "Expected add_rvalue_reference_t<string> to be string&&");
    static_assert(is_same<add_rvalue_reference_t<string*>, string*&&>::value,
        "Expected add_rvalue_reference_t<string*> to be string*&&");
    static_assert(is_same<add_rvalue_reference<string&>::type, string&>::value,
        "Expected add_rvalue_reference_t<string&> to be string&");
    static_assert(is_same<add_rvalue_reference_t<string&&>, string&&>::value,
        "Expected add_rvalue_reference_t<string&&> to be string&&");
    cout << "All static_assert tests of add_rvalue_reference passed." << endl;
    return 0;
}

/*Output:
All static_assert tests of add_rvalue_reference passed.
*/

需求

標頭: < type_traits>

命名空間:std

另請參閱

<type_traits>
add_lvalue_reference 類別
is_rvalue_reference 類別