std::basic_format_arg<Context>:: handle
|
定义于头文件
<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) | |
令
-
T为格式化参数的类型, -
TD为 std:: remove_const_t < T > , -
TQ为:当 const TD 满足 __formattable_with < Context > 时为 const TD ,否则为TD, -
ref为格式化参数的引用。
等价于:
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
仅用于格式化函数内部。
参见
|
(C++20)
|
为用户自定义格式化器提供格式化参数访问的类模板
(类模板) |
|
(C++20)
(C++20)
|
创建引用所有格式化参数的类型擦除对象,可转换为
format_args
(函数模板) |