Использование последней версии MSVC:
#include <array>
#include <print>
int main() {
std::array<int, 4> a{};
std::print("{}\n", a);
}
Почему выдает эту ошибку:
'parse': не является членом 'std::formatter<std::__p2286::_Compile_time_parse_format_specs::_FormattedType,std::__p2286::_Compile_time_parse_format_specs::_CharT>'
Обновлено:
Это не дубликат других вопросов, в которых есть разные ошибки и ответы на которые std::print
или std::format
просто пока недоступны.
Если бы это был их дубликат, этот код не работал бы, но он работает:
#include <string>
#include <print>
using namespace std::string_literals;
int main() {
auto s = "hello world"s;
std::print("{}\n", s);
}
// prints "hello world\n"
Кажется, в настоящее время это поддерживает только libc++ : godbolt.org/z/13e3j436r
работает с clang 18 godbolt.org/z/axrWrjTxM
Поддержка MSVC «диапазонов форматирования» является неполной. В частности, поддержка форматирования std::array
ожидается в VS 2022 17.12 Preview 1. (Она записана как «range-default-formatter
» в https://github.com/microsoft/STL/wiki/Changelog .)
Поддержка средств форматирования C++23 в MSVC все еще находится в стадии разработки. Только в Clang они уже реализованы. Посетите страницу поддержки компилятора и найдите «Диапазоны форматирования» и «Улучшение форматирования контейнера по умолчанию» чуть ниже.