最終更新日時(UTC):
が更新

履歴 編集

function template
<format>

std::make_format_args(C++20)

namespace std {
  template<class Context = format_context, class... Args>
  format_arg_store<Context, Args...> make_format_args(Args&&... args); // (1)

  template<class... Args>
  format_arg_store<wformat_context, Args...> make_wformat_args(Args&&... args); // (2)
}

概要

可変長引数の型を消去して、basic_format_argの列に変換する。 戻り値の型 format_arg_store は便宜上次の通り定義されるが、その型名は規格に含まれない。

namespace std {
  template<class Context, class... Args>
  struct format_arg_store { // exposition only
    array<basic_format_arg<Context>, sizeof...(Args)> args;
  };
}

basic_format_argsformat_arg_storeから構築できる。 make_format_argsの結果はただちにbasic_format_argsへ変換するのが意図された使い方である。

template<class... Args>
string format(string_view fmt, const Args&... args)
{
  return vformat(fmt, {make_format_args(args...)}); // format_arg_store から format_args へ暗黙変換
}

事前条件

すべての引数の型TiについてContext::formatter_type<Ti>Formatter要件を満たすこと。

戻り値

(1)

return {basic_format_arg<Context>(args)...}

(2)

return make_format_args<wformat_context>(args...);

実装例

namespace std {
  template<class Context = format_context, class... Args>
  format_arg_store<Context, Args...> make_format_args(const Args&... args)
  {
    return {basic_format_arg<Context>(args)...}
  }

  template<class... Args>
  format_arg_store<wformat_context, Args...> make_wformat_args(const Args&... args)
  {
    return make_format_args<wformat_context>(args...);
  }
}

バージョン

言語

  • C++20

処理系

参照