Resultados de la búsqueda a petición "language-lawyer"
¿Es legal optimizar las tiendas / construcción de variables de pila volátiles?
Me di cuenta de que clang y gcc optimizan la construcción o asignación de un volátilstruct declarado en la pila, en algunos escenarios. Por ejemplo, el siguiente código: struct nonvol2 { uint32_t a, b; }; void volatile_struct2() { volatile ...
¿Es legal desreferenciar punteros no válidos si no se produce una conversión de valor a valor?
Por más que lo intenté, la respuesta más cercana que he visto esesta [https://stackoverflow.com/questions/7346634/dereferencing-an-invalid-pointer-then-taking-the-address-of-the-result/7346775] , con dos respuestas completamente opuestas (!) La ...
¿Qué cambios en C ++ hicieron que la inicialización de copia funcione para la clase con un constructor explícito?
Considera este código: struct X{ explicit X(){} explicit X(const X&){} }; void foo(X a = X()){} int main(){}Usando el estándar C ++ 14, tanto GCC 7.1 como clang 4.0rechaza [https,://godbolt.org/g/r8u5gO]El código, que es lo que esperaba. Sin ...
Legalidad de usar el operador eliminar en un puntero obtenido de la colocación nueva
Estoy seguro de que este código debería ser ilegal, ya que claramente no funcionará, pero parece estar permitido por el C ++ 0x FCD. class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = new (raw) X(); // according to the standard, the ...
Uso de la palabra clave typename con typedef y new
Considera este código, template<class T> struct Sample { typename T::X *x; //declare pointer to T's X };En el código anterior, la palabra clavetypename es requerido por el compilador, para que pueda desambiguar entre tipos anidados y valores ...
¿Este código en C cae en la categoría Comportamiento indefinido?
a es una matrizfoo es una función yi es unint. a[++i] = foo(a[i-1], a[i]);¿El código anterior tiene unComportamiento indefinido? Los índices de la matriz++i, i-1 yi, están garantizados para estar en el rango de la matriz.
¿Se permite cambiar los bytes subyacentes de un objeto si no se cambia el valor?
¿Se permite cambiar los bytes subyacentes de un objeto si no se cambia el valor en sí? Entonces, por ejemplo, ¿puede este fragmento de código imprimir "diferir"? int a = 0; char b[sizeof(int)]; memcpy(b, &a, sizeof(int)); if (memcmp(b, ...
¿La metaprogramación con estado está mal formada (todavía)?
Uno de mis inventos más queridos / malvados que he tenido la fortuna de encontrar es elcontador constexpr [http://b.atch.se/posts/constexpr-counter/], también conocido como metaprogramación con estado. Como se menciona en la publicación, parece ...
¿Printf ("% x", 1) invoca un comportamiento indefinido?
De acuerdo con el estándar C (6.5.2.2 párrafo 6) Si la expresión que denota la función llamada tiene un tipo que no incluye un prototipo, las promociones de enteros se realizan en cada argumento, y los argumentos que tienen tipo flotante se ...
Especialización de plantilla de clase, ordenamiento parcial y síntesis de funciones
Las reglas para elegir qué especialización de plantilla de clase se prefiere implica reescribir las especializaciones en plantillas de función y determinar qué plantilla de función es más especializada a través de las reglas de pedido para ...