Espacios de nombres
Variantes
Acciones

std::make_format_args, std::make_wformat_args

De cppreference.com
< cpp‎ | utility‎ | format
 
 
Biblioteca de servicios
 
Biblioteca de formato
Funciones de formato
(C++20)
(C++20)
(C++20)
(C++20)
Formateador
(C++20)
Argumentos de formato
make_format_argsmake_wformat_args
(C++20)(C++20)
Error de formato
 
Definido en el archivo de encabezado <format>
template<class Context =std::format_context, class... Args>
/*format-arg-store*/<Context, Args...> make_format_args(const Args&... args);
(1) (desde C++20)
template<class... Args>
/*format-arg-store*/<std::wformat_context, Args...> make_wformat_args(const Args&... args);
(2) (desde C++20)

Devuelve un objeto que almacena un array de argumentos de formato y que puede convertirse implícitamente a std::basic_format_args<Context>.

El comportamiento no está definido si typename Context::template formatter_type<Ti> no cumple con los requisitos de Formatter para cualquier Ti en Args.

Contenido

[editar]Parámetros

args... - Los valores a usar como argumentos de formato.

[editar]Valor de retorno

Un objeto que alberga los argumentos de formato.

[editar]Notas

Un argumento de formato tiene semántica de referencia para tipos definidos por el usuario y no extiende el tiempo de vida de args. Es la responsabilidad del programador asegurarse de que args viva más allá del valor de retorno. Generalmente, el resultado solo se usa como un argumento para una función de formato.

[editar]Ejemplo

#include <array>#include <format>#include <iostream>#include <string_view>   void raw_write_to_log(std::string_view users_fmt, std::format_args&& args){staticint n{};std::clog<<std::format("{:04} : ", n++)<<std::vformat(users_fmt, args)<<'\n';}   template<typename... Args>constexprvoid log(Args&&... args){   // Generar cadena de formato "{} "...std::array<char, sizeof...(Args)*3+1> braces{};constexprconstchar 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("El número", "de", "argumentos", "es", "arbitrario."); log("Cualquier tipo que cumpla los requisitos de `Formatter`", "puede imprimirse."); log("Por ejemplo:", 1, 2.0, '3', "*42*");   raw_write_to_log("{:02} │ {} │ {} │ {}", std::make_format_args(1, 2.0, '3', "4"));}

Salida:

0000 : El número de argumentos es arbitrario. 0001 : Cualquier tipo que cumpla los requisitos de `Formatter` puede imprimirse. 0002 : Por ejemplo: 1 2.0 3 *42* 0003 : 01 │ 2.0 │ 3 │ 4

[editar]Véase también

Clase que proporciona acceso a todos los argumentos de formato.
(plantilla de clase)[editar]
(C++20)
Variante de no plantilla de std::format utilizando una representación de argumento de tipo borrado.
(función)[editar]
(C++20)
Variante de no plantilla de std::format_to utilizando una representación de argumento de tipo borrado.
(plantilla de función)[editar]
close