Size: a a a

2020 September 09

CD

Constantine Drozdov in pro.cxx
твой класс MyTp не понимает этот спецификатор
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
{as_http_time} реализуется как as_seconds(arg) с последующим форматированием
Не "{as_http_time}" а "{}", as_http_time(tp). Который уже новый тип, у него свой личный форматтер.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Не "{as_http_time}" а "{}", as_http_time(tp). Который уже новый тип, у него свой личный форматтер.
нененене, мы обсуждаем, как твоя реализация MyTp отреагирует на появление нового способа форматирования для std::format
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
нененене, мы обсуждаем, как твоя реализация MyTp отреагирует на появление нового способа форматирования для std::format
Да никак, ну может станет не нужна только.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Да никак, ну может станет не нужна только.
Что значит никак, как она поймет этот спецификатор? Там безусловный фоллбек куда-то на непонятом формате?
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Что значит никак, как она поймет этот спецификатор? Там безусловный фоллбек куда-то на непонятом формате?
as_http_time(tp) -> http_time, у этого типа свой formatter, он например вообще не требует спецификации.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
as_http_time(tp) -> http_time, у этого типа свой formatter, он например вообще не требует спецификации.
а почему as_http_time(tp) вообще не вернуло string
источник

CD

Constantine Drozdov in pro.cxx
а зачем я его параметры указываю в форматтер, а не в вызов as_http_time
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
а почему as_http_time(tp) вообще не вернуло string
Это пессимизация, лишняя аллокация, лишний string. Это просто враппер который форматирует chrono time point в rfc2616 формат. Форматирует не в string в общем случае а в format context, которой шаблонный, просто back inserter какой то.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Это пессимизация, лишняя аллокация, лишний string. Это просто враппер который форматирует chrono time point в rfc2616 формат. Форматирует не в string в общем случае а в format context, которой шаблонный, просто back inserter какой то.
Вернул backinserter, в чем проблема
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Вернул backinserter, в чем проблема
Ну так его задача в том и состоит. Его formatter и есть этот appender, который в свою очередь может использовать стандартный chrono appender но с прибитым гвоздями форматом.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Ну так его задача в том и состоит. Его formatter и есть этот appender, который в свою очередь может использовать стандартный chrono appender но с прибитым гвоздями форматом.
Так, зачем мне вообще иметь параметры внутри {} для результата as_http_time(tp), если я могу их же типизированно написать в вызов as_http_time и ничего не разбирать
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Так, зачем мне вообще иметь параметры внутри {} для результата as_http_time(tp), если я могу их же типизированно написать в вызов as_http_time и ничего не разбирать
Так никаких параметров при этом в спецификации и не подразумевается, spec parser пустой.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Так никаких параметров при этом в спецификации и не подразумевается, spec parser пустой.
Зачем мне для случая format("{}", some()) вообще иметь {} а не %s?
источник

CD

Constantine Drozdov in pro.cxx
Ну или спецификатор back inserter, если угодно
источник

CD

Constantine Drozdov in pro.cxx
Если я использую тайпкасты, я тайпкастирую сразу в back inserter
источник

CD

Constantine Drozdov in pro.cxx
Я хочу, чтобы ты понял, что разница между format("{}", as_http_time(tp)) и format("{as_http_time}", tp) такая же, как между format("{}", d2s(1488, "%.3")) и format("%.3d", 1488), она примерно весь смысл строки формата
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Я хочу, чтобы ты понял, что разница между format("{}", as_http_time(tp)) и format("{as_http_time}", tp) такая же, как между format("{}", d2s(1488, "%.3")) и format("%.3d", 1488), она примерно весь смысл строки формата
В format спецификация не определяет тип, она наоборот в контексте конкретного типа парсится, format("{0:f} {0:g} {0:e}", 3.14). Это удобно, под свой тип можно определить любую спецификацию. А определение типа через спецификацию как в printf это как раз не расширяемая штука.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
В format спецификация не определяет тип, она наоборот в контексте конкретного типа парсится, format("{0:f} {0:g} {0:e}", 3.14). Это удобно, под свой тип можно определить любую спецификацию. А определение типа через спецификацию как в printf это как раз не расширяемая штука.
Ты мне все еще не объяснил, почему удобно писать format("{}", d2s(1488, "%.3"))
источник

CD

Constantine Drozdov in pro.cxx
Как раз меньше всего смысла парсить строку формата в контексте конкретного типа, потому что это можно применить операцией к конкретному типу
источник