std::add_lvalue_reference
| Defined in header <type_traits> |  |  | 
|---|---|---|
| template< class T > struct add_lvalue_reference; | (1) | (since C++11) | 
| template< class T > struct add_rvalue_reference; | (2) | (since C++11) | 
创建一个lvalue或rvalue引用类型。T...
1%29T是一个对象或函数,该对象或函数为%27T cv-或ref限定%28,因为C++17%29提供了一个成员类型type那就是T&.如果T是对某种类型的rvalue引用。U,然后type是U&.否则,type是T...
2%29T是一个对象或函数,该对象或函数为%27T cv-或ref限定%28,因为C++17%29提供了一个成员类型type那就是T&&,否则type是T...
成员类型
| Name | Definition | 
|---|---|
| type | reference to T, or T if not allowed | 
帮助者类型
| template< class T > using add_lvalue_reference_t = typename add_lvalue_reference<T>::type; |  | (since C++14) | 
|---|---|---|
| template< class T > using add_rvalue_reference_t = typename add_rvalue_reference<T>::type; |  | (since C++14) | 
注记
这些类型转换遵循引用折叠规则:
std::add_lvalue_reference<T&>::type is T& std::add_lvalue_reference<T&&>::type is T& std::add_rvalue_reference<T&>::type is T& std::add_rvalue_reference<T&&>::type is T&&
例
二次
#include <iostream>
#include <type_traits>
 
int main() {
   using nonref = int;
   using lref = typename std::add_lvalue_reference<nonref>::type;
   using rref = typename std::add_rvalue_reference<nonref>::type;
 
   std::cout << std::boolalpha;
   std::cout << std::is_lvalue_reference<nonref>::value << '\n';
   std::cout << std::is_lvalue_reference<lref>::value << '\n';
   std::cout << std::is_rvalue_reference<rref>::value << '\n';
}二次
产出:
二次
false
true
true二次
另见
| is_reference (C++11) | checks if a type is either lvalue reference or rvalue reference (class template) | 
|---|---|
| remove_reference (C++11) | removes reference from the given type (class template) | 
 © cppreference.com在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

