Пространства имён
Варианты
Действия

std::formattable

Материал из cppreference.com
< cpp‎ | utility‎ | format
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Библиотека форматирования
Функции форматирования
(C++20)
(C++20)
(C++20)
(C++20)
Концепты форматирования
formattable
(C++23)
Форматировщик
(C++20)
Аргументы форматирования
(C++20) (устарело в C++26)
Ошибка формата
 
Определено в заголовочном файле <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)
определяет функции, используемые библиотекой форматирования
(именованное требование)