std::basic_format_string, std::format_string, std::wformat_string
<format>
struct basic_format_string;
using format_string =
using wformat_string =
Class template std::basic_format_string
wraps a std::basic_string_view that will be used by formatting functions.
The constructor of std::basic_format_string
performs compile-time format string checks unless the constructor argument is returned by std::runtime_format
(since C++26).
Contents
[edit] Member functions
basic_format_string
, raising compile error if the argument is not a format string (public member function)
(public member function)
std::basic_format_string::basic_format_string
consteval basic_format_string( const T& s );
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.basic_format_string
object that stores a view of string s as returned by std::runtime_format. It does not perform format string checks upon construction.Parameters
- ordinary characters (except { and }), which are copied unchanged to the output,
- escape sequences {{ and }}, which are replaced with { and } respectively in the output, and
- replacement fields.
Each replacement field has the following format:
{
arg-id (optional) }
(1)
{
arg-id (optional) :
format-spec }
(2)
args
whose value is to be used for formatting; if it is omitted, the arguments are used in order.
The arg-id s in a format string must all be present or all be omitted. Mixing manual and automatic indexing is an error.
- For basic types and standard string types, the format specification is interpreted as standard format specification.
- For chrono types, the format specification is interpreted as chrono format specification.
- For range types, the format specification is interpreted as range format specification.
- For std::pair and std::tuple , the format specification is interpreted as tuple format specification.
- For std::thread::id and std::stacktrace_entry, see thread id format specification and stacktrace entry format specification.
- For std::basic_stacktrace, no format specifier is allowed.
- For other formattable types, the format specification is determined by user-defined
formatter
specializations.
std::basic_format_string::get
Returns the stored string view.
[edit] Notes
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.
[edit] Example
Reason: no example
[edit] Defect reports
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
|