首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::add_rvalue_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,然后typeU&.否则,typeT...

2%29T是一个对象或函数,该对象或函数为%27T cv-或ref限定%28,因为C++17%29提供了一个成员类型type那就是T&&,否则typeT...

成员类型

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&&

二次

代码语言:javascript
复制
#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';
}

二次

产出:

二次

代码语言:javascript
复制
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)

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券