std::forward_as_tuple
cppreference.com
<tbody>
</tbody>
template< class... Types > tuple<Types&&...> forward_as_tuple( Types&&... args ) noexcept; |
( C++11) (constexpr since C++14) |
|
args, . rvalue, rvalue , lvalue.
| args |
std::tuple, std::tuple<Types&&...>(std::forward<Types>(args)...)
, forward_as_tuple ; .
#include <iostream>
#include <map>
#include <tuple>
#include <string>
int main()
{
std::map<int, std::string> m;
m.emplace(std::piecewise_construct,
std::forward_as_tuple(10),
std::forward_as_tuple(20, 'a'));
std::cout << "m[10] = " << m[10] << '\n';
// :
// std::tuple<int&&, char&&> .
//
// auto t = std::forward_as_tuple(20, 'a');
// m.emplace(std::piecewise_construct, std::forward_as_tuple(10), t);
}
:
m[10] = aaaaaaaaaaaaaaaaaaaa
(C++11) |
tuple , ( ) |
| tuple ( ) | |
(C++11) |
tuple, ( ) |
(C++17) |
( ) |