boost :: formato e impressão personalizada de contêineres std
Eu tenho uma função no meu namespacens
que me ajuda a imprimir contêineres STL. Por exemplo:
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;
}
Isso funciona muito bem para imprimir comoperator <<
diretamente:
std::set<std::string> x = { "1", "2", "3", "4" };
std::cout << x << std::endl;
No entanto, usandoboost::format
é impossível:
std::set<std::string> x = { "1", "2", "3", "4" };
boost::format("%1%") % x;
O problema é bastante óbvio: Boost não tem idéia de que eu gostaria que usasse meuoperator <<
para imprimir tipos que não têm nada a ver com o meu namespace. Fora de adicionar umusing
declaração emboost/format/feed_args.hpp
existe uma maneira conveniente de fazerboost::format
procure meuoperator <<
?