Ini adalah tindak lanjut dari pertanyaan saya sebelumnya tentang wadah STL dengan pencetakan cantik , yang untuknya kami berhasil mengembangkan solusi yang sangat elegan dan sepenuhnya umum.
Pada langkah selanjutnya, saya ingin memasukkan pencetakan cantik untuk std::tuple<Args...>
, menggunakan templat variadic (jadi ini benar-benar C ++ 11). Karena std::pair<S,T>
, saya hanya mengatakan
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
Apa konstruksi analog untuk mencetak tupel?
Saya telah mencoba berbagai bit argumen template yang membongkar tumpukan, meneruskan indeks dan menggunakan SFINAE untuk mengetahui kapan saya berada di elemen terakhir, tetapi tidak berhasil. Saya tidak akan membebani Anda dengan kode saya yang rusak; deskripsi masalahnya semoga cukup lurus ke depan. Pada dasarnya, saya menyukai perilaku berikut:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
Poin bonus untuk menyertakan tingkat umum yang sama (char / wchar_t, pembatas pasangan) seperti pertanyaan sebelumnya!