Namespaces
Variants
Actions

std::forward_as_tuple

From cppreference.com
< cpp‎ | utility‎ | tuple
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
 
Defined in header <tuple>
template< class... Types >
std::tuple <Types&&...> forward_as_tuple( Types&&... args ) noexcept;
(since C++11)
(constexpr since C++14)

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.

[edit] Parameters

args - zero or more arguments to construct the tuple from

[edit] Return value

A std::tuple object created as if by std::tuple <Types&&...>(std::forward <Types>(args)...)

[edit] Notes

If the arguments are temporaries, forward_as_tuple does not extend their lifetime; they have to be used before the end of the full expression.

[edit] Example

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

Output:

m[6] = ggggggggg

[edit] See also

(C++11)
creates a tuple object of the type defined by the argument types
(function template) [edit]
(C++11)
creates a tuple of lvalue references or unpacks a tuple into individual objects
(function template) [edit]
(C++11)
creates a tuple by concatenating any number of tuples
(function template) [edit]
(C++17)
calls a function with a tuple of arguments
(function template) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/tuple/forward_as_tuple&oldid=177795"

AltStyle によって変換されたページ (->オリジナル) /