名前空間
変種
操作

std::formattable

From cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
ヘッダー <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 */ = /* unspecified */;
(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の要件を満たし、さらに(std::remove_reference_t<T>がconst修飾されている場合は)Formatterの要件を満たすことを指定します。

公開専用エイリアステンプレート/* fmt_iter_for */は、std::output_iterator<const CharT&>を満たす、未指定の型を返します。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3925 C++23 std::basic_format_contextの2番目のテンプレート引数が提供されていませんでした。 提供された

[編集] 関連項目

(C++20)
与えられた型のフォーマット規則を定義する
(クラステンプレート) [編集]
指定されたフォーマット引数型と文字型に対するフォーマット操作を抽象化します。
(名前付き要件)
フォーマットライブラリによって使用される関数を定義します。
(名前付き要件)
English 日本語 中文(简体) 中文(繁體)