Хотелось бы получить совет от коллег кто активно использует сабж и, самое главное, пишет форматеры для собственных типов.
Так уж сложилось, что у меня в проектах, года с 2008-го активно используется свой форматер строк, который я давно писал сам, т.к. на тот момент ничего готового и быстрого не удалось найти. По счастливому совпадению, я выбрал точно такой же синтаксис форматирования, содрав его с Pyton-а. У меня правда в качестве своих форматеров используются функции, что на практике оказалось более удобным чем текущий подход в std. В связи с тем, что со времени выхода стандарта С++20 прошло уже 2 года, я думаю что с выходом С++23 реализация std::format уже должна появиться во всех актуальных компиляторах

. С связи с чем, я решил выпилить свою реализацию и заменить на стандартную, пока основанную на библиотеке fmt.
Проблема:
Все форматеры у меня были шаблонными сразу для всех типов строк. С этим я вроде разобрался. "Рыба" выглядит примерно так:
template<typename type_t typename char_t>
class std::formatter<type_t, char_t>
{
public:
constexpr auto parse(basic_format_parse_context<char_t>& ctx) -> decltype(ctx.begin())
{
// do parsing...
return ctx.begin();
}
template<typename it_t>
auto format(const type_t_t& data, basic_format_context<it_t, char_t>& ctx) const -> decltype(ctx.out())
{
// do formatting...
format_to(ctx.out(), "Some format"); // error for all character types except 'char'
// do formatting...
return ctx.out();
}
};
Но как оказалось, при форматировании, контекст не поддерживает вывод в него констант с типом отличным от типа char_t. Тут сразу появляется поле для фантазий на тему как такое лучше и эффективнее всего делать. В общем нужны советы и примеры тех кто с этим уже сталкивался или понял что предлагает стандартная библиотека на это счёт (или fmt).
P.S. Очень прошу воздержаться от вкусовщины, советов типа: std::format не нужен, мне не нравится синтаксис и т.д.