std::forward_as_tuple

来自cppreference.com
< cpp‎ | utility‎ | tuple

定义于头文件 <tuple>
template< class... Types >
tuple<Types...> forward_as_tuple( Types&&... args );
(C++11 起)
构造一个元组中的参数args适合作为函数的参数进行转发。该元组的右值引用的数据成员时,右值作为参数,否则有左值引用的数据成员。如果右值使用此功能前必须消耗的下一个序列点,结果.
原文:
Constructs a tuple of references to the arguments in args suitable for forwarding as an argument to a function. The tuple has rvalue reference data members when rvalues are used as arguments, and otherwise has lvalue reference data members. If rvalues are used, the result of this function must be consumed before the next sequence point.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 参数

args -
零个或多个参数来构造的元组
原文:
zero or more arguments to construct the tuple from
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 返回值

一个std::tuple创建的对象,如果std::tuple<Types&&...>(std::forward<Types>(args)...)
原文:
A std::tuple object created as if by std::tuple<Types&&...>(std::forward<Types>(args)...)
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 例外

noexcept 规定:  
noexcept
  

[编辑] 示例

#include <iostream>
#include <map>
#include <tuple>
#include <string>
 
int main()
{
    std::map<int, std::string> m;
 
    // same as m.emplace(10, 20, 'a');
    m.emplace(std::forward_as_tuple(10, std::string(20, 'a')));
    std::cout << "m[10] = " << m[10] << '\n';
 
    // The following is an error: it produces a
    // std::tuple<int&&, std::string&&> holding two dangling references.
    //
    // auto t = std::forward_as_tuple(10, std::string(20, 'a'));
    // m.emplace(t);
}

输出:

m[10] = aaaaaaaaaaaaaaaaaaaa
创建一个类型由参数类型定义的tuple对象
(函数模板) [编辑]
创建左值引用的一个 tuple ,或解包 tuple 为独立对象
(函数模板) [编辑]
通过连接任意数量的元组来创建一个tuple
(函数模板) [编辑]