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 <<?

Respuestas a la pregunta(4)

Su respuesta a la pregunta