Resultados de la búsqueda a petición "language-lawyer"

5 la respuesta

¿Accediendo a un miembro sindical inactivo y comportamiento indefinido?

Tenía la impresión de que acceder a ununion otro miembro que no sea el último conjunto es UB, pero parece que no puedo encontrar una referencia sólida (aparte de las respuestas que afirman que es UB pero sin ningún soporte del estándar). ...

4 la respuesta

¿Establecer todos los bytes de int a (unsigned char) 0, garantizado para representar cero?

Esto no es una cuestión de práctica recomendada (ni comportamiento indefinido), pero sobre lo que lac ++ -standard realmente garantiza en el asunto de convertir todos los bytes de un tipo entero al valor de(unsigned char)0. Las preguntas En el ...

4 la respuesta

El tipo incompleto no está permitido en una clase, pero sí en una plantilla de clase

El siguiente es un código no válido: struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { return foo{}.x.value; } Esto es bastante claro, ya quefoo::bar se considera incompleto en ...

1 la respuesta

Acceso a la variable constexpr dentro de la expresión lambda sin capturar

En el siguiente ejemplo, puedo acceder a laconstexpr variablex desde el interior de la lambday sin capturarlo explícitamente. Esto no es posible six no se declara comoconstexpr. ¿Existen reglas especiales que se aplican aconstexpr para ...

2 la respuesta

Es una violación de alias estricta alias una estructura como su primer miembro?

Código de muestra struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) } Creo que esto es común y se considera aceptable. El estándar garantiza que no hay relleno inicial en la estructura. Sin ...

3 la respuesta

¿El calificador de tipo restringido C99 / C11 implica algo para funciones sin definición?

Supongamos que tenemos una declaración de función para la que no tenemos acceso a su definición: void f(int * restrict p, int * restrict q, int * restrict r); Dado que no sabemos cómo se accederá a los punteros, no podemos saber si una ...

1 la respuesta

Está garantizado el orden de inicialización de las variables de plantilla constexpr (es decir, inicializado constante)?

Desde en.cppreference.com / w / cpp / language / initialization [http://en.cppreference.com/w/cpp/language/initialization]: Inicialización dinámica sin orden, que[sic se aplica solo a miembros de datos estáticos de plantilla de clase (estática / ...

1 la respuesta

Está inicializando un declarador de puntero con un comportamiento indefinido de puntero no válido?

n resumen, ¿se considera que el siguiente código tiene un comportamiento indefinido? int main() { int *p = <some invalid pointer value>; }Para un ejemplo de compilación, tome el siguiente código: int main() { int *p = new int; delete p; // Now ...

3 la respuesta

constexpr miembro de datos estáticos sin inicializador

#include <complex> struct S { static std::complex<double> constexpr c; };gcc genera un error porque falta un inicializador. Clang y MSVC no generan un error. Por lo que sé, un miembro de datos estáticos constexpr debe tener un inicializador, ...

1 la respuesta

¿Por qué `void * = 0` y` void * = nullptr` hacen la diferencia?

staba jugando con SFINAE y encontré un comportamiento que no puedo explicar. Esta compila bien [https://ideone.com/HDlWP7]: template<typename Integer, std::enable_if_t<std::is_integral<Integer>::value>* = nullptr> void foo(Integer) {} ...