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

履歴 編集

function template
<format>

std::visit_format_arg(C++20)

namespace std {
  template<class Visitor, class Context>
  see_below visit_format_arg(Visitor&& vis, basic_format_arg<Context> arg); // (1)
}

概要

  • (1) : basic_format_argオブジェクトが現在保持している型に対応する関数を呼び出し、呼び出された関数の戻り値型で戻り値を返す

効果

次と等しい。

return visit(forward<Visitor>(vis), arg.value);

ただし、便宜上、basic_format_argは次のprivateメンバを持つとする。 (これらのprivateメンバは規格に含まれない)

namespace std {
  template<class Context>
  class basic_format_arg {
  public:
    class handle;

  private:
    using charT = typename Context::char_type;

    variant<monostate, bool, charT,
            int, unsigned int, long long int, unsigned long long int,
            float, double, long double,
            const charT*, basic_string_view<charT>,
            const void*, handle> value;

    template<class Visitor, class Ctx>
    friend auto visit_format_arg(Visitor&& vis, basic_format_arg<Ctx> arg);
  };
}

戻り値

  • (1) : basic_format_argオブジェクトが現在保持している型に対応する関数を呼び出した戻り値

実装例

namespace std {
  template<class Visitor, class Context>
  auto visit_format_arg(Visitor&& vis, basic_format_arg<Context> arg)
  {
    return visit(forward<Visitor>(vis), arg.value);
  }
}

備考

basic_format_argオブジェクトが現在保持している型がユーザー定義型の場合、ビジターに渡されるのはhandle型のオブジェクトになるので、元々どのような型だったかを知ることはできない。

バージョン

言語

  • C++20

処理系

参照