Здравствуйте, rg45, Вы писали:
R>Вот прямо в такой формулировке, думаю, что невозможен — потому что в таком случае возникает две различные версии одной и той же специализации, а это нарушение ODR. Нужно думать, какие тут можно костыли прикрутить.
Наверное вопрос в этом, как выкрутится теперь. Ситуация простая. У std::formatter есть специализация для вывода std::chrono::duration<>. У меня в библиотеках везде используется своя специализация времени:
using reftime_t = std::chrono::duration<int64, std:ratio<1, 10000000>>;
Стандартные возможности форматирования огромны, но мне хочется их расширить для своего типа времени и переиспользовать. Таким образом объявляя
template <>
struct std::formatter<reftime_t> {
// ...
};
я автоматически лишаюсь возможности вызвать стандартную реализацию и вынужден повторять всю логику заново. Это не дело, я считаю