• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <format>

    std::basic_format_arg::handle

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

    概要

    basic_format_argにおいてユーザー定義型の値とフォーマット関数のアドレスを保持するのに使用されるクラス。

    メンバ関数

    名前 説明 対応バージョン
    format ユーザー定義型に対応するフォーマット関数を実行する C++20

    実装例

    namespace std {
      template<class Context>
      class basic_format_arg<Context>::handle {
        using charT = typename Context::char_type;
        using format_function = void(*)(basic_format_parse_context<charT>&, Context&, const void*);
    
        const void* ptr_;
        format_function format_;
    
        template<class T> explicit handle(const T& val) noexcept
          :ptr_(addressof(val))
          ,format_function(
            [](basic_format_parse_context<charT>& parse_ctx, Context& format_ctx, const void* ptr) {
              typename Context::template formatter_type<T> f;
              parse_ctx.advance_to(f.parse(parse_ctx));
              format_ctx.advance_to(f.format(*static_cast<const T*>(ptr), format_ctx));
            }
          )
        {}
    
        friend class basic_format_arg<Context>;
    
      public:
        void format(basic_format_parse_context<charT>& parse_ctx, Context& format_ctx) const
        {
          format_(parse_ctx, format_ctx, ptr_);
        }
      };
    }
    

    バージョン

    言語

    • C++20

    処理系

    参照