std::forward_as_tuple
Von cppreference.com
| Definiert in der Header-Datei <tuple> |
||
template< class... Types > std::tuple<Types&&...> forward_as_tuple( Types&&... args ) noexcept; |
(seit C++11) (constexpr seit C++14) |
|
Konstruiert ein Tupel von Referenzen auf die Argumente in args, das sich zum Weiterleiten als Argument an eine Funktion eignet. Das Tupel hat Datenelemente vom Typ rvalue-Referenz, wenn rvalues als Argumente verwendet werden, andernfalls hat es Datenelemente vom Typ lvalue-Referenz.
Inhalt |
[bearbeiten] Parameter
| args | - | Null oder mehr Argumente, aus denen das Tupel konstruiert werden soll |
[bearbeiten] Rückgabewert
Ein std::tuple-Objekt, das so erstellt wird, als ob durch std::tuple<Types&&...>(std::forward<Types>(args)...)
[bearbeiten] Hinweise
Wenn die Argumente temporär sind, verlängert forward_as_tuple deren Lebensdauer nicht; sie müssen vor dem Ende des vollständigen Ausdrucks verwendet werden.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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); }
Ausgabe
m[6] = ggggggggg
[bearbeiten] Siehe auch
| (C++11) |
erstellt ein tuple-Objekt vom Typ, der durch die Argumenttypen definiert ist(function template) |
| (C++11) |
erstellt ein tuple von Lvalue-Referenzen oder entpackt ein Tupel in einzelne Objekte (Funktionsvorlage) |
| (C++11) |
erstellt ein tuple durch Verkettung beliebig vieler Tupel(function template) |
| (C++17) |
ruft eine Funktion mit einem Tupel von Argumenten auf (Funktionsvorlage) |