Size: a a a

2020 September 08

CD

Constantine Drozdov in pro.cxx
Vladimir Suisei
https://wandbox.org/permlink/gQKaQWq07Phc04NZ
https://wandbox.org/permlink/2XmUjL5uo726AEe1

Почему в зависимости от наличия bool в списке типов шаблона, код в 9.3 не извлекает из варианта стринг, а в 10.1 извлекает?
хм... может быть преобразование "abc" в bool приоритетнее, чем в string?
источник

VS

Vladimir Suisei in pro.cxx
Constantine Drozdov
хм... может быть преобразование "abc" в bool приоритетнее, чем в string?
Какая-то нездоровая фигня
источник

CD

Constantine Drozdov in pro.cxx
я не уверен, но это возможно
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
обгоняй по буквам
Можно всяких шаблонных вспомогашек напилить, format("...{};{}\r\n", ..., opt(deleted, " = delete"), opt(has_ns, " }"));
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Можно всяких шаблонных вспомогашек напилить, format("...{};{}\r\n", ..., opt(deleted, " = delete"), opt(has_ns, " }"));
ну там надо бы ? в шаблон или что-то такое
источник

CD

Constantine Drozdov in pro.cxx
{"= noexcept"}?
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
ну там надо бы ? в шаблон или что-то такое
Не, усложнение базового формата, чаще всего не нужное. Проще через манипуляторы со своими formatter'ами втаскивать.
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
{"= noexcept"}?
А если optional кусок не строка?
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Не, усложнение базового формата, чаще всего не нужное. Проще через манипуляторы со своими formatter'ами втаскивать.
ну в моём представлении строка формата это sort of DSL, то есть там весьма индивидуально все должно быть подогнано, вряд ли есть достаточно унифицированное решение
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
А если optional кусок не строка?
тогда optional пиши)
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
ну в моём представлении строка формата это sort of DSL, то есть там весьма индивидуально все должно быть подогнано, вряд ли есть достаточно унифицированное решение
Там же главная фишка по сравнению со стримами это type erasure, никакого code bloat в зависимости от параметров, функция форматирования ровно одна на один тип контекста. Поэтому вся специфика определяется на самом деле типом параметра.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Там же главная фишка по сравнению со стримами это type erasure, никакого code bloat в зависимости от параметров, функция форматирования ровно одна на один тип контекста. Поэтому вся специфика определяется на самом деле типом параметра.
ну вот у меня получается, что тип (1) это вообще не стримы, а конвенция, определенная выходным форматом, и там естественный способ - генерация по строке формата
источник

CD

Constantine Drozdov in pro.cxx
а тип (2) ближе к стримам это некоторая форма сериализаторов
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
а тип (2) ближе к стримам это некоторая форма сериализаторов
Генерация по строке формата это как раз больше про сериализацию. В format меньше строгости. И оно совмещается с сериализаторами на  раз-два, format("got object: {}", as_json(obj)). Здесь as_json например не сериализация в промежуточную строку, а враппер, который  может сериализовать объект в format context.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Генерация по строке формата это как раз больше про сериализацию. В format меньше строгости. И оно совмещается с сериализаторами на  раз-два, format("got object: {}", as_json(obj)). Здесь as_json например не сериализация в промежуточную строку, а враппер, который  может сериализовать объект в format context.
запись as_json(obj) это то, ради ухода от чего все и городится
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Генерация по строке формата это как раз больше про сериализацию. В format меньше строгости. И оно совмещается с сериализаторами на  раз-два, format("got object: {}", as_json(obj)). Здесь as_json например не сериализация в промежуточную строку, а враппер, который  может сериализовать объект в format context.
сравни format("got object: %J", obj)
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
сравни format("got object: %J", obj)
Это сильно сужает расширяемость формата, прямой путь к specification hell :) в format спецификация локальна для типа, с теми же escaped можно играться хоть так: format("{}", escape::xua(str)), хоть так: format("{:xua}", escape(str)). Это гибче чем глобальный %J.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Это сильно сужает расширяемость формата, прямой путь к specification hell :) в format спецификация локальна для типа, с теми же escaped можно играться хоть так: format("{}", escape::xua(str)), хоть так: format("{:xua}", escape(str)). Это гибче чем глобальный %J.
ну там скорее будет {xua} или {j}, да
на самом деле существует очень мало форм экранирования, и просто ты хочешь использовать разное слово format
источник

CD

Constantine Drozdov in pro.cxx
в действительности примитивов придумано не так много
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Это сильно сужает расширяемость формата, прямой путь к specification hell :) в format спецификация локальна для типа, с теми же escaped можно играться хоть так: format("{}", escape::xua(str)), хоть так: format("{:xua}", escape(str)). Это гибче чем глобальный %J.
Вопрос в том, что она должна быть глобальна, потому что определяет смысл того, что должно быть записано - xml url attribute. Абсолютный путь к папке, скажем, строка, но таким в принципе не является
источник