Ceci fait suite à ma question précédente sur les jolis conteneurs STL , pour lesquels nous avons réussi à développer une solution très élégante et totalement générale.
Dans cette prochaine étape, je voudrais inclure la jolie impression pour std::tuple<Args...>
, en utilisant des modèles variadiques (donc c'est strictement C ++ 11). Car std::pair<S,T>
, je dis simplement
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
Quelle est la construction analogue pour imprimer un tuple?
J'ai essayé divers morceaux de décompression de la pile d'arguments de modèle, de passer des index et d'utiliser SFINAE pour découvrir quand je suis au dernier élément, mais sans succès. Je ne vous charge pas de mon code cassé; la description du problème est, espérons-le, assez simple. Essentiellement, j'aimerais le comportement suivant:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
Points bonus pour avoir inclus le même niveau de généralité (char / wchar_t, séparateurs de paires) que la question précédente!