Pretty-print std::tuple

C'est une suite à ma question précédente sur impression des conteneurs STL, pour lequel nous avons réussi à développer un très élégant et entièrement de solution générale.


Dans cette prochaine étape, je voudrais inclure d'impression pour std::tuple<Args...>, à l'aide de variadic templates (si ce n'est strictement C++11). Pour 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 << ")";
}

Ce qui est l'analogue de la construction pour l'impression d'un tuple?

J'ai essayé différents bits de l'argument de modèle de pile déballage, en passant indices autour et à l'aide de SFINAE à découvrir quand je suis au dernier élément, mais sans succès. Je ne devrais pas vous importuner avec mon code cassé; la description du problème, je l'espère, straight-forward assez. Essentiellement, je tiens a le comportement suivant:

auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; //prints: (5, "Hello", -0.1)

Points de Bonus pour le même niveau de généralité (char/wchar_t, paire de délimiteurs) comme la question précédente!

  • Quelqu'un a mis tout le code ici dans une bibliothèque? Ou même une .php-avec-tout-dans lequel on peut saisir et utiliser?
  • Peut-être que cxx-prettyprint? C'est ce que j'avais besoin de ce code pour.
InformationsquelleAutor Kerrek SB | 2011-06-05