Namespaces
Variants

std::basic_format_arg<Context>:: handle

From cppreference.net
定义于头文件 <format>
template < class Context >
class basic_format_arg < Context > :: handle ;
(C++20 起)

一种类型擦除包装器,允许格式化用户自定义类型的对象。

handle 对象通常由 std::make_format_args 创建,并通过 std::visit_format_arg std::basic_format_arg visit 成员函数访问 (C++26 起)

目录

数据成员

handle 的典型实现是 可平凡复制 的,且仅存储两个非静态数据成员:

  • 一个指向待格式化对象的 const void * 指针,以及
  • 一个 void ( * ) ( std:: basic_format_parse_context < Context :: char_type > & , Context & , const void * ) 函数指针,指向在 format 成员函数中执行所需操作的函数(详见下文)。

成员函数

format
(C++20)
使用给定上下文格式化被引用对象
(公开成员函数)

std::basic_format_arg<Context>::handle:: format

void format ( std:: basic_format_parse_context < Context :: char_type > & parse_ctx,
Context & format_ctx ) const ;
(since C++20)

等价于: typename Context :: template formatter_type < TD > f ;
parse_ctx. advance_to ( f. parse ( parse_ctx ) ) ;
format_ctx. advance_to ( f. format ( const_cast < TQ & > ( static_cast < const TD & > ( ref ) ) , format_ctx ) ) ;

注释

一个 handle 对格式化参数具有引用语义,且不会延长其生命周期。程序员需确保参数的生命周期长于 handle 。通常, handle 仅用于格式化函数内部。

参见

为用户自定义格式化器提供格式化参数访问的类模板
(类模板)
创建引用所有格式化参数的类型擦除对象,可转换为 format_args
(函数模板)