std::basic_..._arg::handle(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 std::basic_..._arg::handle(3) 🌸

Okay so this one is from the C++ Standard Libary manual β€” yes, that's their spelling, not mine, bestie πŸ’…. We're talking about a fancy little type-erased wrapper situation.

✨ NAME ✨

std::basic_format_arg::handle β€” std::basic_format_arg::handle

πŸ¦‹ Synopsis πŸ¦‹

Defined in header <format>
template< class Context >                 (since C++20)
class basic_format_arg<Context>::handle;

A type-erased wrapper that allows formatting an object of a user-defined type.

handle objects are typically created by std::make_format_args and accessed through std::visit_format_arg or the visit member functions of std::basic_format_arg (since C++26).

πŸ’– Member functions πŸ’–

  • format β€” formats the referenced object with the given contexts (C++20) (public member function)

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

(since C++20)

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

Let:

  • T be the type of the formatting argument,
  • TD be std::remove_const_t<T>,
  • TQ be const TD if const TD satisfies __formattable_with<Context> or TD otherwise, and
  • ref be a reference to the formatting argument.

Equivalent to:

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));

πŸŽ€ Notes πŸŽ€

⚠️ Reference-semantics warning, bestie: a handle has reference semantics for the formatted argument and does not extend its lifetime. It is the programmer's responsibility to ensure that the argument outlives the handle. Usually, a handle is only used within formatting functions.

🌈 See also 🌈

  • basic_format_arg (C++20) β€” class template that provides access to a formatting argument for user-defined formatters (class template)
  • make_format_args (C++20), make_wformat_args (C++20) β€” creates a type-erased object referencing all formatting arguments, convertible to format_args (function template)

πŸ’– That's the whole vibe! Source: http://cppreference.com Β· version/date: 2024.06.10 Β· page: std::basic_..._arg::handle(3). Go slay your formatting, bestie 🫢✨

πŸ“¦ where this page comes from