Namensräume
Varianten
Aktionen

std::forward_as_tuple

Von cppreference.com
< cpp‎ | utility‎ | tuple
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
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

#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

erstellt ein tuple-Objekt vom Typ, der durch die Argumenttypen definiert ist
(function template) [bearbeiten]
(C++11)
erstellt ein tuple von Lvalue-Referenzen oder entpackt ein Tupel in einzelne Objekte
(Funktionsvorlage) [edit]
(C++11)
erstellt ein tuple durch Verkettung beliebig vieler Tupel
(function template) [bearbeiten]
(C++17)
ruft eine Funktion mit einem Tupel von Argumenten auf
(Funktionsvorlage) [edit]