Defined in header <format> | ||
---|---|---|
template< class CharT, class... Args > struct basic_format_string; | (1) | (since C++20) |
template< class... Args > using format_string = basic_format_string<char, std::type_identity_t<Args>...>; | (2) | (since C++20) |
template< class... Args > using wformat_string = basic_format_string<wchar_t, std::type_identity_t<Args>...>; | (3) | (since C++20) |
Class template std::basic_format_string
wraps a std::basic_string_view
and performs compile-time format string checks at construction time.
(constructor) | constructs a basic_format_string , raising compile error if the argument is not a format string (public member function) |
get | returns the wrapped string (public member function) |
template< class T > consteval basic_format_string( const T& s ); |
Constructs a basic_format_string
object that stores a view of string s
. If the argument is not a compile-time constant, or if it cannot be parsed as a format string for the formatting argument types Args
, the construction is ill-formed.
This overload participates in overload resolution only if const T&
models std::convertible_to<std::basic_string_view<CharT>>
.
s | - | an object that represents the format string. The format string consists of
Each replacement field has the following format:
|
constexpr std::basic_string_view<CharT> get() const noexcept; |
Returns the stored string view.
The alias templates format_string
and wformat_string
use std::type_identity_t
to inhibit template argument deduction. Typically, when they appear as a function parameter, their template arguments are deduced from other function arguments.
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.
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
P2508R1 | C++20 | there's no user-visible name for this facility | the name basic_format_string is exposed |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/format/basic_format_string