Size: a a a

2020 September 08

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Вопрос в том, что она должна быть глобальна, потому что определяет смысл того, что должно быть записано - xml url attribute. Абсолютный путь к папке, скажем, строка, но таким в принципе не является
В любом случае спецификация, если она есть, это просто набор символов, далее уже относительно типа происходит валидация, поддерживает он такую спецификацию или нет. И в format ровно это и сделано.
источник
2020 September 09

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
В любом случае спецификация, если она есть, это просто набор символов, далее уже относительно типа происходит валидация, поддерживает он такую спецификацию или нет. И в format ровно это и сделано.
Это будет рантаймовая ошибка в любом случае, ничем не лучше printf
источник

CD

Constantine Drozdov in pro.cxx
Схема format это фактический тип читает рантаймовый спецификатор
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Схема format это фактический тип читает рантаймовый спецификатор
Не совсем, там предполагается constexpr парсер спецификаций с валидацией в compile time.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Не совсем, там предполагается constexpr парсер спецификаций с валидацией в compile time.
Если даже фактический тип будет читать компильтаймовый спецификатор, это будет реализация не в ту сторону для случая (1) и по сути ничем не лучше какой-то формы, аналогичной iostream
источник

CD

Constantine Drozdov in pro.cxx
Там, кажется, нужно только изменить сигнатуру на auto operator << (StreamRef, T)
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Если даже фактический тип будет читать компильтаймовый спецификатор, это будет реализация не в ту сторону для случая (1) и по сути ничем не лучше какой-то формы, аналогичной iostream
Ну это лучше iostream хотя бы реализацией. Это не инлайнинг цепочки вызовов форматирования, а упаковка в array<T*, format-fn*>.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Ну это лучше iostream хотя бы реализацией. Это не инлайнинг цепочки вызовов форматирования, а упаковка в array<T*, format-fn*>.
Ты можешь, скажем, изменить стандартное требование к operator << на "входной и выходной тип не обязаны совпадать", после чего нашаманить с выводами так, что у тебя будет обычный operator << и ничего больше, а вспомогательные параметры поедут в шаблонный параметр "поток"
источник

CD

Constantine Drozdov in pro.cxx
Такое слегка отдающее ФП решение
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Ты можешь, скажем, изменить стандартное требование к operator << на "входной и выходной тип не обязаны совпадать", после чего нашаманить с выводами так, что у тебя будет обычный operator << и ничего больше, а вспомогательные параметры поедут в шаблонный параметр "поток"
<<, ... это последовательность вызовов, особо не пошаманишь, если только не наворачивать их в шаблонный ref-tuple, что тоже тяжело
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
<<, ... это последовательность вызовов, особо не пошаманишь, если только не наворачивать их в шаблонный ref-tuple, что тоже тяжело
почему? stream << "hello" не обязано вернуть тот же тип, что stream, оно может себе этот hello вписать как constexpr элемент
источник

CD

Constantine Drozdov in pro.cxx
т.е. возвращено (stream, "hello")
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
почему? stream << "hello" не обязано вернуть тот же тип, что stream, оно может себе этот hello вписать как constexpr элемент
Ну я про это и говорю, забыл как эта техника в операторах называется.
источник

DS

Dmitry Sokolov in pro.cxx
А вообще format довольно консервативен в плане спецификаций, например printf/python не позволяют сделать вывод fp с fixed числом знаков после запятой и с отрезанием нулей. И Зверович ответил что это мало кому надо наверное, хотя вот для time_point регулировать размер дробной часть в виде %.3S сказал может и можно бы, т.к. просто расширение относительно strftime.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Ну я про это и говорю, забыл как эта техника в операторах называется.
Я на самом деле больше всего не уверен в фундаментальной разнице пользовательского и формального вывода
источник

CD

Constantine Drozdov in pro.cxx
В частности, не является ли параметризация вывода просто тайпкастом
источник

CD

Constantine Drozdov in pro.cxx
Скажем так - я уверен в существовании случая (1), когда формат вывода определяется спецификацией вывода, но не уверен в существовании случая (2), когда формат вывода определяется выводящим
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
А вообще format довольно консервативен в плане спецификаций, например printf/python не позволяют сделать вывод fp с fixed числом знаков после запятой и с отрезанием нулей. И Зверович ответил что это мало кому надо наверное, хотя вот для time_point регулировать размер дробной часть в виде %.3S сказал может и можно бы, т.к. просто расширение относительно strftime.
То есть вопрос - а почему ты вообще хочешь указать 3 знака после запятой вот этому конкретному числу? Откуда волшебная константа 3?
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
То есть вопрос - а почему ты вообще хочешь указать 3 знака после запятой вот этому конкретному числу? Откуда волшебная константа 3?
Ну вот отрезание нулей это например мне понадобилось для манипулятора fmt::bytes, хочу до сотых но без нулей - 3 Kb, 1.25 Gb, 1.2 Mb но не 1.20 Mb. С временем вообще просто, 3 для примера, в логе хочу например вывод 2020-09-09T00:49:00.120450, микросекунды с нулями в конце.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Ну вот отрезание нулей это например мне понадобилось для манипулятора fmt::bytes, хочу до сотых но без нулей - 3 Kb, 1.25 Gb, 1.2 Mb но не 1.20 Mb. С временем вообще просто, 3 для примера, в логе хочу например вывод 2020-09-09T00:49:00.120450, микросекунды с нулями в конце.
Вопрос - почему эта настройка локальна, а не глобальна
источник