• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function template
    <format>

    std::make_format_args

    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

    処理系

    参照