|
Вариативные шаблоны C++ и вариативные функции Си
|
|||
---|---|---|---|
#18+
petrav, Посмотрите еще на тему форматирования 1 https://en.cppreference.com/w/cpp/utility/format 2 https://github.com/fmtlib/fmt (в т.ч. имплементация std::format) 3 https://github.com/mpark/format ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2020, 21:43 |
|
Вариативные шаблоны C++ и вариативные функции Си
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav, Посмотрите еще на тему форматирования 1 https://en.cppreference.com/w/cpp/utility/format 2 https://github.com/fmtlib/fmt (в т.ч. имплементация std::format) 3 https://github.com/mpark/format Спасибо, завтра начну изучать. Кстати, я тут нашёл простейший приём, который решает все проблемы: Код: plaintext 1. 2. 3. 4.
Просто и ясно. Студия тут же начинает выдавать предупреждения о неправильности формата и аргуменов. Правда тут же ломается перегрузка по теме printf()/wprintf(). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 19:14 |
|
Вариативные шаблоны C++ и вариативные функции Си
|
|||
---|---|---|---|
#18+
petrav Код: sql 1. 2. 3. 4.
Просто и ясно. Студия тут же начинает выдавать предупреждения о неправильности формата и аргуменов. Правда тут же ломается перегрузка по теме printf()/wprintf(). Кстати, вот я уверен, что на таком коде PVS Studio сейчас в позу встанет и начнёт сыпать предупреждениями. Что ещё нужно сделать, что бы просто начать программировать на C++, а не прорываться сквозь строй косяков? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 21:10 |
|
Вариативные шаблоны C++ и вариативные функции Си
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Пока Студия 2019 не поддерживает C++ 20. Anatoly Moskovsky 2 https://github.com/fmtlib/fmt (в т.ч. имплементация std::format) В этой библиотеке compile time check не работает как нужно. Что-то проверяет, но вот это компилируется, хотя оно и неверно: Код: plaintext 1.
Я уж не говорю о том, что "FMT_STRING" -- это макрос. Anatoly Moskovsky Библиотека уже три года не поддерживается, не думаю что там есть какое-то откровение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 11:25 |
|
Вариативные шаблоны C++ и вариативные функции Си
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav Господа, нам осталось решить одну проблему: как в одном вызове совместить и статическую проверку данных и динамическую печать данных? Желательно найти выход без макросов. Неужели выхода нет?! :-((( Вот псевдокод, он не компилируется: Чтобы применить static_assert к выражению, все его составляющие должны быть известны на этапе компиляции. В частности это означает что строка формата не может быть аргументом функции, а должна быть передана как аргумент шаблона. Поэтому без макроса нельзя обойтись если вы хотите чтобы для юзера все выглядело как обычная функция. Это я понимаю, но как же строку передать как аргумент шаблона? Гуглинг не помог, есть решения в стиле Boost.MPL, но там такие костыли и жесть нереальная. Ну и макросы. Я не думаю, что это хороший дизайн. Т.е. резко превышен болевой порог в плане костылизма. Если явно строку не поместить как глобальную константу, то, видимо, её и нельзя передать как аргумент шаблона. По крайней мере по человечески. В принципе можно отступить от стандартного printf() style. Например так: Код: plaintext 1.
Но я думаю это невозможно. Если Вы забыли, напомню. Предлагается что бы заработал такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:18 |
|
|
start [/forum/topic.php?fid=57&gotonew=1&tid=2017436]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 136ms |
0 / 0 |