Pretty-print std :: tuple
Esta es una continuación de mi pregunta anterior sobre contenedores STL de impresión bonita, para lo cual logramos desarrollar una solución muy elegante y totalmente general.
En el siguiente paso, me gustaría incluir una bonita impresión parastd::tuple<Args...>
, usando plantillas variadas (así que esto es estrictamente C ++ 11). Porstd::pair<S,T>
, Simplemente digo
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
Cuál es la construcción análoga para imprimir una tupla?
He intentado varias partes del desempaque de pila de argumentos de plantilla, pasando índices y usando SFINAE para descubrir cuándo estoy en el último elemento, pero sin éxito. No te cargaré con mi código roto; Esperemos que la descripción del problema sea lo suficientemente sencilla. Esencialmente, me gustaría el siguiente comportamiento:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
Bonus puntos por incluir el mismo nivel de generalidad (char / wchar_t, par delimitadores) que la pregunta anterior!