GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::make_format_args,std::make_wformat_args(3) C++ Standard Libary std::make_format_args,std::make_wformat_args(3)

std::make_format_args,std::make_wformat_args - std::make_format_args,std::make_wformat_args


Defined in header <format>
template<class Context = std::format_context, class... Args>
/*format-arg-store*/<Context, Args...> make_format_args(Args&&... (1) (since C++20)
args);
template<class... Args>
/*format-arg-store*/<std::wformat_context, Args...> (2) (since C++20)
make_wformat_args(Args&&... args);


Returns an object that stores an array of formatting arguments and can be implicitly
converted to std::basic_format_args<Context>.


The behavior is undefined if typename Context::template formatter_type<Ti> does not
meet the BasicFormatter requirements for any Ti in Args.


args... - values to be used as formatting arguments


Returns


An object that holds the formatting arguments.


A formatting argument has reference semantics for user-defined types and does not
extend the lifetime of args. It is the programmer's responsibility to ensure that
args outlive the return value. Usually, the result is only used as argument to
formatting function.

// Run this code


#include <array>
#include <format>
#include <iostream>
#include <string_view>


void raw_write_to_log(std::string_view users_fmt, std::format_args&& args) {
static int n{};
std::clog << std::format("{:04} : ", n++) << std::vformat(users_fmt, args) << '\n';
}


template <typename... Args>
constexpr void log(Args&&... args) {


// Generate formatting string "{} "...
std::array<char, sizeof...(Args) * 3 + 1> braces{};
constexpr const char c[4] = "{} ";
for (auto i{0u}; i != braces.size() - 1; ++i) {
braces[i] = c[i % 3];
}
braces.back() = '\0';


raw_write_to_log(std::string_view{braces.data()}, std::make_format_args(args...));
}


int main()
{
log("Number", "of", "arguments", "is", "arbitrary.");
log("Any type that meets the `BasicFormatter` requirements", "can be printed.");
log("For example:", 1, 2.0, '3', "*42*");


raw_write_to_log("{:02} │ {} │ {} │ {}", std::make_format_args(1, 2.0, '3', "4"));
}


0000 : Number of arguments is arbitrary.
0001 : Any type that meets the `BasicFormatter` requirements can be printed.
0002 : For example: 1 2.0 3 *42*
0003 : 01 │ 2.0 │ 3 │ 4


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
objects that are neither const-usable nor
P2418R2 C++20 copyable allow formatting these
(such as generator-like objects) are not objects
formattable


basic_format_args
format_args
wformat_args class that provides access to all formatting arguments
(C++20) (class template)
(C++20)
(C++20)
vformat non-template variant of std::format using type-erased argument
(C++20) representation
(function)
vformat_to non-template variant of std::format_to using type-erased argument
(C++20) representation
(function template)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.