Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir nesne veya işlev türüyse şablon parametresinin rvalue başvuru türünü oluşturur. Aksi takdirde, başvuru semantiği daraltma nedeniyle, tür şablon parametresiyle aynıdır.
Sözdizimi
template <class T>
struct add_rvalue_reference;
template <class T>
using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;
Parametreler
T
Değiştirilecek tür.
Açıklamalar
sınıfı, add_rvalue_reference adlı bir üyeye typesahiptir ve bu, T şablon parametresine yönelik rvalue başvurusunun türü için bir diğer addır. Başvuru semantiği daraltma, nesne olmayan ve işlev olmayan T T&&türleri için T olduğunu gösterir. Örneğin, T bir lvalue başvuru türü olduğunda, add_rvalue_reference<T>::type rvalue başvurusu değil, lvalue başvuru türüdür.
Kolaylık olması için, <type_traits üyesini add_rvalue_referencediğer adıyla type ifade eden bir yardımcı şablon add_rvalue_reference_t> tanımlar.
Örnek
Bu kod örneği, rvalue başvuru türlerinin ve add_rvalue_reference_tkullanılarak add_rvalue_reference nasıl oluşturulduğunu ve bir lvalue başvuru türünde sonucunun add_rvalue_reference rvalue başvurusu olmadığını, ancak lvalue başvuru türüne nasıl daraltıldığında göstermek için static_assert kullanır.
// 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.
*/
Gereksinimler
Üst bilgi: <type_traits>
Ad alanı: std
Ayrıca bkz.
<type_traits>
add_lvalue_reference Sınıfı
is_rvalue_reference Sınıfı