std::basic_format_arg<Context>::handle
來自 cppreference.com
< cpp | 工具 | 格式化 | basic format arg
| 定義於標頭檔案 <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 的典型實現是 可平凡複製的(TriviallyCopyable),並且只儲存兩個非靜態資料成員
- 一個 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; |
(C++20 起) | |
令
-
T是格式化引數的型別, -
TD是 std::remove_const_t<T>, - 如果 const TD 滿足 __formattable_with<Context>,則
TQ是 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(函式模板) |