Namespaces
Variants

std:: formattable

From cppreference.net
Определено в заголовке <format>
template < class T, class CharT >

concept formattable = /* formattable_with */ <
std:: remove_reference_t < T > ,
std:: basic_format_context < /* fmt_iter_for */ < CharT > , CharT >

> ;
(1) (начиная с C++23)
Вспомогательные шаблоны
template < class CharT >
using /* fmt_iter_for */ = /* неопределено */ ;
(2) ( только для демонстрации* )
template < class T, class Context,

class Formatter =
typename Context :: template
formatter_type < std:: remove_const_t < T >> >
concept /* formattable_with */ =
std:: semiregular < Formatter > &&
requires ( Formatter & f, const Formatter & cf, T && t, Context fc,
std:: basic_format_parse_context <
typename Context :: char_type
> pc ) {
{ f. parse ( pc ) } - > std:: same_as < typename decltype ( pc ) :: iterator > ;
{ cf. format ( t, fc ) } - > std:: same_as < typename Context :: iterator > ;

} ;
(3) ( только для демонстрации* )

Концепт formattable определяет, что std:: formatter < std:: remove_cvref_t < T > , CharT > удовлетворяет требованиям BasicFormatter и Formatter (если std:: remove_reference_t < T > имеет квалификатор const).

Экспозиционный псевдоним шаблона /* fmt_iter_for */ возвращает неспецифицированный тип, удовлетворяющий требованиям std:: output_iterator < const CharT & > .

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 3925 C++23 второй шаблонный аргумент std::basic_format_context не был предоставлен предоставлен

Смотрите также

(C++20)
определяет правила форматирования для заданного типа
(шаблон класса)
абстрагирует операции форматирования для заданного типа аргумента форматирования и типа символа
(именованное требование)
(C++20)
определяет функции, используемые библиотекой форматирования
(именованное требование)