std::formattable
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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++20) |
шаблонный класс, который определяет правила форматирования для данного типа (шаблон класса) |
(C++20) |
абстрагирует операции форматирования для данного типа аргумента форматирования и типа символа (именованное требование) |
(C++20) |
определяет функции, используемые библиотекой форматирования (именованное требование) |