Espacios de nombres
Variantes
Acciones

atributo de C++: indeterminate

De cppreference.com
< cpp‎ | language‎ | attributes
 
 
 
 
 

Indica que el parámetro de la variable o función tiene un valor indeterminado si no se inicializa.

Contenido

[editar]Syntaxis

[[indeterminate]]

[editar]Explicación

[[indeterminate]] se puede aplicar a la definición de una variable de bloque con duración de almacenamiento automática o a una declaración de un parámetro de una declaración de función. El atributo especifica que los bytes que componen el almacenamiento de un objeto con duración de almacenamiento automática son inicialmente indeterminados en lugar de erróneos.

Si se declara un parámetro de función con [[indeterminate]], debe declararse en la primera declaración de su función. Si un parámetro de función se declara con [[indeterminate]] en la primera declaración de su función en una unidad de traducción y la misma función se declara sin [[indeterminate]] en el mismo parámetro en su primera declaración en otra unidad de traducción, el programa está mal formado, no se requiere diagnóstico.

[editar]Notas

El atributo [[indeterminate]] restablece el comportamiento no definido que se introdujo de forma implícita hasta C++26. Puede hacer que los compiladores consideren inalcanzable una ruta de código que lea un valor indeterminado.

[editar]Ejemplo

void f(int);   void g(){int x [[indeterminate]];// valor indeterminadoint y;// valor erróneo   f(x);// comportamiento no definido f(y);// comportamiento erróneo}   struct T { T(){}int x;};   void h(T a [[indeterminate]], T b){ f(a.x);// comportamiento no definido cuando se llama abajo f(b.x);// comportamiento erróneo cuando se llama abajo}   h(T(), T());


[editar]Referencias

  • Estándar C++26 (ISO/IEC 14882:2026):
  • 9.12.7 Almacenamiento indeterminado [dcl.attr.indet]
close