Impulso :: Formato y impresión personalizada de contenedores estándar.
Tengo una función en mi espacio de nombresns
Eso me ayuda a imprimir los contenedores STL. Por ejemplo:
template <typename T>
std::ostream& operator<<(std::ostream& stream, const std::set<T>& set)
{
stream << "{";
bool first = true;
for (const T& item : set)
{
if (!first)
stream << ", ";
else
first = false;
stream << item;
}
stream << "}";
return stream;
}
Esto funciona muy bien para imprimir conoperator <<
directamente:
std::set<std::string> x = { "1", "2", "3", "4" };
std::cout << x << std::endl;
Sin embargo, utilizandoboost::format
es imposible:
std::set<std::string> x = { "1", "2", "3", "4" };
boost::format("%1%") % x;
El problema es bastante obvio: Boost no tiene idea de que me gustaría usar mi costumbreoperator <<
para imprimir tipos que no tienen nada que ver con mi espacio de nombres. Fuera de agregar unusing
declaración enboost/format/feed_args.hpp
, hay una forma conveniente de hacerboost::format
busca mioperator <<
?