add_rvalue_reference Sınıfı
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 type
sahiptir 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_reference
diğ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_t
kullanı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ı
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin