Namespaces
Variants

std:: basic_format_parse_context

From cppreference.net
Definido en el encabezado <format>
template < class CharT >
class basic_format_parse_context ;
(desde C++20)

Proporciona acceso al estado de análisis de la cadena de formato que consiste en el rango de la cadena de formato siendo analizado y el contador de argumentos para indexación automática.

Una instancia de std::basic_format_parse_context se pasa al Formatter al analizar la especificación de formato.

Un programa que declare una especialización explícita o parcial de std::basic_format_parse_context está mal formado, no se requiere diagnóstico.

Se proporcionan varios typedefs para tipos de caracteres comunes:

Definido en el encabezado <format>
Tipo Definición
std::format_parse_context std :: basic_format_parse_context < char >
std::wformat_parse_context std :: basic_format_parse_context < wchar_t >

Contenidos

Tipos de miembros

Tipo Definición
char_type CharT
iterator std:: basic_string_view < CharT > :: const_iterator
const_iterator std:: basic_string_view < CharT > :: const_iterator

Funciones miembro

(constructor)
construye una instancia de std::basic_format_parse_context a partir de una cadena de formato y el número de argumentos
(función miembro pública)
operator=
[eliminado]
std::basic_format_parse_context no es copiable
(función miembro pública)
begin
devuelve un iterador al inicio del rango de la cadena de formato
(función miembro pública)
end
devuelve un iterador al final del rango de la cadena de formato
(función miembro pública)
advance_to
avanza el iterador de inicio a la posición dada
(función miembro pública)
next_arg_id
entra en modo de indexación automática y devuelve el siguiente índice de argumento
(función miembro pública)
check_arg_id
entra en modo de indexación manual, verifica si el índice de argumento dado está en rango
(función miembro pública)
check_dynamic_spec
(C++26)
verifica si el tipo del argumento de formato correspondiente con el índice de argumento dado está en los argumentos de plantilla de tipo dados
(función miembro pública)
check_dynamic_spec_integral
(C++26)
verifica si el tipo del argumento de formato correspondiente con el índice de argumento dado es un tipo integral
(función miembro pública)
check_dynamic_spec_string
(C++26)
verifica si el tipo del argumento de formato correspondiente con el índice de argumento dado es un tipo de cadena
(función miembro pública)

std::basic_format_parse_context:: basic_format_parse_context

(1)
constexpr explicit

basic_format_parse_context ( std:: basic_string_view < CharT > fmt,

std:: size_t num_args = 0 ) noexcept ;
(hasta C++26)
constexpr explicit
basic_format_parse_context ( std:: basic_string_view < CharT > fmt ) noexcept ;
(desde C++26)
basic_format_parse_context ( const basic_format_parse_context & ) = delete ;
(2)
1) Construye una instancia de std::basic_format_parse_context . Inicializa el rango de la cadena de formato a [ fmt. begin ( ) , fmt. end ( ) ) , y el contador de argumentos a num_args (hasta C++26) 0 (desde C++26) .

Cualquier llamada a next_arg_id , check_arg_id , o check_dynamic_spec en una instancia de std::basic_format_parse_context inicializada usando este constructor no es una expresión constante del núcleo.

(desde C++26)
2) El constructor de copia está eliminado. std::basic_format_parse_context no es copiable.

std::basic_format_parse_context:: begin

constexpr const_iterator begin ( ) const noexcept ;

Devuelve un iterador al inicio del rango de la cadena de formato.

std::basic_format_parse_context:: end

constexpr const_iterator end ( ) const noexcept ;

Devuelve un iterador al final del rango de la cadena de formato.

std::basic_format_parse_context:: advance_to

constexpr void advance_to ( const_iterator it ) ;

Establece el inicio del rango de la cadena de formato a it . Después de una llamada a advance_to() , las llamadas posteriores a begin() devolverán una copia de it .

El comportamiento es indefinido si end ( ) no es alcanzable desde it .

std::basic_format_parse_context:: next_arg_id

constexpr std:: size_t next_arg_id ( ) ;

Entra en modo de indexación automática de argumentos y devuelve el siguiente índice de argumento, comenzando desde 0.

Si * this ya ha entrado en modo de indexación manual de argumentos, lanza std::format_error .

Si el siguiente índice de argumento es mayor o igual al num_args proporcionado en el constructor, la llamada no es una expresión constante núcleo.

std::basic_format_parse_context:: check_arg_id

constexpr void check_arg_id ( std:: size_t id ) ;

Activa el modo de indexación manual de argumentos.

Si * this ya ha activado el modo de indexación automática de argumentos, lanza std::format_error .

Si id es mayor o igual que num_args proporcionado en el constructor, la llamada no es una expresión constante núcleo.

std::basic_format_parse_context:: check_dynamic_spec

template < class ... Ts >
constexpr void check_dynamic_spec ( std:: size_t id ) noexcept ;
(desde C++26)

Si id es mayor o igual que num_args proporcionado en el constructor o el tipo del argumento de formato correspondiente (después de la conversión a std::basic_format_arg ) no es uno de los tipos en Ts... , la llamada no es una expresión constante del núcleo. Una llamada a check_dynamic_spec no tiene efecto en tiempo de ejecución.

El programa está mal formado a menos que sizeof... ( Ts ) >= 1 , los tipos en Ts... sean únicos, y cada tipo sea uno de bool , char_type , int , unsigned int , long long int , unsigned long long int , float , double , long double , const char_type * , std:: basic_string_view < char_type > , o const void * .

std::basic_format_parse_context:: check_dynamic_spec_integral

constexpr void check_dynamic_spec_integral ( std:: size_t id ) noexcept ;
(desde C++26)

Equivalente a llamar check_dynamic_spec < int , unsigned int , long long int , unsigned long long int > ( id ) . Una llamada a check_dynamic_spec_integral no tiene efecto en tiempo de ejecución.

std::basic_format_parse_context:: check_dynamic_spec_string

constexpr void check_dynamic_spec_string ( std:: size_t id ) noexcept ;
(desde C++26)

Equivalente a llamar check_dynamic_spec < const char_type * , std:: basic_string_view < char_type >> ( id ) . Una llamada a check_dynamic_spec_string no tiene efecto en tiempo de ejecución.

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3825 C++20 check_arg_id tenía una verificación de argumento
id en tiempo de compilación, pero next_arg_id no la tenía
añadido
LWG 3975 C++20 se permitía la especialización de usuario de basic_format_parse_context no permitido