bonjour à tous ,
je ne comprends pas vraiment l'utilité de make_tuple, si je peux créer un tuple sans préciser de types comme ceci:
alors à quoi sert make_tuple?Code:
1
2 std::tuple foo {"bonjour", 37, 18.5, "au revoir"};
merci.
Version imprimable
bonjour à tous ,
je ne comprends pas vraiment l'utilité de make_tuple, si je peux créer un tuple sans préciser de types comme ceci:
alors à quoi sert make_tuple?Code:
1
2 std::tuple foo {"bonjour", 37, 18.5, "au revoir"};
merci.
std::make_unique est apparu en même temps que std::tuple en C++11. La déduction des arguments template (CTAD) n'est apparu qu'en C++17.
L'utilisation de fonctions était donc le seul moyen d'instancier un type sans mettre explicitement les arguments templates. Maintenant, toutes — ou presque toutes — les fonctions de la forme std::make_* peuvent être remplacées.
Bon, il y a quand même des cas un peu tordus, commeCode:
1
2 std::tuple a{1, ""}; std::tuple b{a}; // std::tuple<int, char const*>, mais on pourrait vouloir std::tuple<std::tuple<int, char const*>>
merci!