Comments 11
А как насчёт переиспользования манипуляторов?
Если я правильно понял, фичами из статьи можно пользоваться только в VS? В Eclipse даже с последним GCC пока ничего не получится? Я в этой области профан, так что прошу извинить, если что не так...
Можно использовать fmtlib с GCC, который умеет хотя бы C++11. Собственно эта библиотека и послужила основой std::format
. fmtlib имеет некоторые отличия, но в целом очень похожа.
PS: а кто-нибудь знает причину, почему std::format
до сих пор отсутствует в реализации стандартной библиотеки от GCC?
ну в последнем llvm 15 libcxx научился в format вроде полностью.
В последних примерах происходит временная аллокация памяти std::string, которая потом скопируется уже в правильное место. Интересно примеры форматирования нескольких значений сразу куда надо.
Штука хорошая, но под линуксами в стандартном виде в продакшене ещё года три такое не увидишь, если не дольше. Как и другие хорошие нововведения C++20, как те же модули.
А как же перегрузка операторов? Какие плюсы и минусы format перед операторами. А то я не совсем вникаю зачем это придумали...
божечки, кто то еще работает со строчками в с++? Долго еще будет эта разножопица с char/wchar?…
В общем если у кого код из статьи не компилируется, знайте, что с определённого времени formatter<T>::format
должен быть константым (LWG 3636). И несмотря на то, что это уточнение стандарта помечено статусом C++23, актуальные версии GCC и MSVC при сборке через CMake с set(CMAKE_CXX_STANDARD 20)
всё равно ругаются огромной малопонятной простынёй, если не объявить указанный метод константым.
Пользовательские типы и std::format в C++20