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