std::basic_format_string, std::format_string, std::wformat_string
Определено в заголовке <format> | ||
|---|---|---|
template< class CharT, class... Args > struct basic_format_string; | (1) | (с C++20) |
template< class... Args > using format_string = basic_format_string<char, std::type_identity_t<Args>...>; | (2) | (с C++20) |
template< class... Args > using wformat_string = basic_format_string<wchar_t, std::type_identity_t<Args>...>; | (3) | (с C++20) |
Шаблон класса std::basic_format_string оборачивает std::basic_string_view, который будет использоваться функциями форматирования.
Он выполняет проверки строки форматирования во время компиляции при создании только если аргумент конструктора не возвращается std::runtime_format(с C++26).
Члены
| (конструктор) | создаёт basic_format_string, вызывая ошибку компиляции, если аргумент не является строкой форматирования (публичный член-функция) |
| get | возвращает обернутую строку (публичный член-функция) |
std::basic_format_string::basic_format_string
template< class T > consteval basic_format_string( const T& s ); | (1) | |
basic_format_string( /*runtime-format-string*/<CharT> s ) noexcept; | (2) | (с C++26) |
basic_format_string, который хранит представление строки s. Если аргумент не является константой времени компиляции или не может быть распарсен как строка форматирования для типов аргументов форматирования Args, создание объекта будет некорректным.- Этот перегруз участвует в разрешении перегрузки только если
const T&является модельюstd::convertible_to<std::basic_string_view<CharT>>.
basic_format_string, который хранит представление строки s возвращённой std::runtime_format. Он не выполняет проверки строки форматирования при создании.Параметры
| s | - | объект, представляющий строку форматирования. Строка форматирования состоит из
Каждое поле замены имеет следующий формат:
|
std::basic_format_string::get
constexpr std::basic_string_view<CharT> get() const noexcept; |
Возвращает сохранённое представление строки.
Примечания
Псевдонимы шаблонов format_string и wformat_string используют std::type_identity_t для предотвращения вывода аргументов шаблона. Обычно, когда они появляются в качестве параметра функции, их аргументы шаблона выводятся из других аргументов функции.
template< class... Args >
std::string format( std::format_string<Args...> fmt, Args&&... args );
auto s = format("{} {}", 1.0, 2);
// Calls format<double, int>. Args are deduced from 1.0, 2
// Due to the use of type_identity_t in format_string, template argument deduction
// does not consider the type of the format string.Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, опубликованное | Корректное поведение |
|---|---|---|---|
| P2508R1 | C++20 | нет видимого пользователю имени для этой возможности | имя basic_format_string экспонируется |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/format/basic_format_string