# std::formattable

From cppreference.com
< cpp‎ | utility‎ | format

Defined in header `<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) | (since C++23)
Helper templates |  |
template< class CharT > using __fmt_iter_for = /* unspecified */; | (2) | (exposition only*)
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) | (exposition only*)

The concept `formattable` specifies that std::formatter<std::remove_cvref_t<T>, CharT> meets the requirements of BasicFormatter and Formatter (if std::remove_reference_t<T> is const-qualified).

The exposition-only alias template `__fmt_iter_for` yields an unspecified type that satisfies std::output_iterator<const CharT&>.

### See also

formatter (C++20) | class template that defines formatting rules for a given type (class template)
BasicFormatter (C++20) | abstracts formatting operations for a given formatting argument type and character type (named requirement)
Formatter (C++20) | defines functions used by the formatting library (named requirement)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/format/formattable&oldid=155756"