Jest to kontynuacja mojego poprzedniego pytania o ładnie zadrukowane pojemniki STL , dla których udało nam się opracować bardzo eleganckie iw pełni ogólne rozwiązanie.
W następnym kroku chciałbym dołączyć drukowanie ładnie std::tuple<Args...>
przy użyciu szablonów wariadycznych (więc jest to ściśle C ++ 11). Po std::pair<S,T>
prostu mówię
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
Jaka jest analogiczna konstrukcja do drukowania krotki?
Próbowałem rozpakować różne fragmenty stosu argumentów szablonów, przekazywać indeksy i używać SFINAE, aby dowiedzieć się, kiedy jestem na ostatnim elemencie, ale bezskutecznie. Nie będę cię obciążać moim złamanym kodem; miejmy nadzieję, że opis problemu jest wystarczająco prosty. Zasadniczo chciałbym zachować następujące zachowanie:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
Dodatkowe punkty za uwzględnienie tego samego poziomu ogólności (char / wchar_t, separatory par) jak w poprzednim pytaniu!