Namespaces
Variants

std:: forward_as_tuple

From cppreference.net
Utilities library
Défini dans l'en-tête <tuple>
template < class ... Types >
std:: tuple < Types && ... > forward_as_tuple ( Types && ... args ) noexcept ;
(depuis C++11)
(constexpr depuis C++14)

Construit un tuple de références aux arguments dans args approprié pour le transfert en tant qu'argument à une fonction. Le tuple possède des membres de données de type référence rvalue lorsque des rvalues sont utilisées comme arguments, et possède sinon des membres de données de type référence lvalue.

Table des matières

Paramètres

args - zéro ou plusieurs arguments pour construire le tuple

Valeur de retour

Un objet std::tuple créé comme si par std:: tuple < Types && ... > ( std:: forward < Types > ( args ) ... )

Notes

Si les arguments sont des temporaires, forward_as_tuple ne prolonge pas leur durée de vie ; ils doivent être utilisés avant la fin de l'expression complète.

Exemple

#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);
}

Sortie :

m[6] = ggggggggg

Voir aussi

(C++11)
crée un objet tuple du type défini par les types d'arguments
(modèle de fonction)
(C++11)
crée un tuple de références de lvalue ou décompose un tuple en objets individuels
(modèle de fonction)
(C++11)
crée un tuple en concaténant un nombre quelconque de tuples
(modèle de fonction)
(C++17)
appelle une fonction avec un tuple d'arguments
(modèle de fonction)