名稱空間
變體
操作

std::basic_format_arg<Context>::handle

來自 cppreference.com
 
 
 
格式化庫
標準格式規範
格式化函式
(C++20)
(C++20)
(C++20)
(C++20)
格式字串
(C++20 起)(C++20 起)(C++20 起)
格式化概念
Formatter
(C++20)
(C++20 起)(C++20 起)(C++20 起)
格式化引數
basic_format_arg::handle
(C++20)
(C++20 起)(C++20 起)(C++20 起)
(C++20) (在 C++26 中廢棄)
(C++20 起)(C++20 起)
格式錯誤
 
定義於標頭檔案 <format>
template< class Context >
class basic_format_arg<Context>::handle;
(C++20 起)

一個型別擦除的包裝器,允許格式化使用者定義型別的物件。

handle 物件通常由 std::make_format_args 建立,並透過 std::visit_format_argstd::basic_format_argvisit 成員函式訪問(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 是格式化引數的型別,
  • TDstd::remove_const_t<T>
  • 如果 const TD 滿足 __formattable_with<Context>,則 TQconst 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 僅在格式化函式內部使用。

[編輯] 另請參閱

為使用者定義格式化器提供格式化引數訪問的類模板
(類模板) [編輯]
建立引用所有格式化引數的型別擦除物件,可轉換為 format_args
(函式模板) [編輯]