在线文档教程
C++
应用 | Utilities

std::add_rvalue_reference

STD:添加[医]洛值[医]参考,STD::[医]r值[医]参照系

Defined in header
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...

成员类型

NameDefinition
typereference to T, or T if not allowed

帮助者类型

template< class T > using add_lvalue_reference_t = typename add_lvalue_reference::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。

http://en.cppreference.com/w/cpp/type/add[医]参照系