boost :: format и нестандартная печать стандартных контейнеров

У меня есть функция в моем пространстве именns это помогает мне печатать контейнеры STL. Например:

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;
}

Это прекрасно работает для печати сoperator << непосредственно:

std::set<std::string> x = { "1", "2", "3", "4" };
std::cout << x << std::endl;

Однако, используяboost::format невозможно:

std::set<std::string> x = { "1", "2", "3", "4" };
boost::format("%1%") % x;

Проблема довольно очевидна: Boost не имеет ни малейшего представления, что я хотел бы использовать егоoperator << печатать типы, которые не имеют ничего общего с моим пространством имен. Вне добавленияusing объявление вboost/format/feed_args.hppЕсть ли удобный способ сделатьboost::format искать мойoperator <<?

Ответы на вопрос(4)

Ваш ответ на вопрос