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.hppexiste uma maneira conveniente de fazerboost::format procure meuoperator <<?

questionAnswers(4)

yourAnswerToTheQuestion