language-lawyer

¿Por qué es f(i = -1, i = -1) comportamiento indefinido?

Estaba leyendo sobre el orden de las violaciones de evaluación, y dan un ejemplo que me desconcierta. 1) Si un efecto se ... eramos operadores de asignación sobrecargados (en lugar de solo escalares simples), entonces también podemos tener problemas.

¿Qué hizo que i = i++ + 1; legal en C++17?

Antes de empezar a gritar comportamiento indefinido, esto es explícitamente listado en N4659 (C++17) i = i++ + 1; ... quierdo i no es "otro efecto secundario" ni "usando el valor del mismo objeto escalar" ya que la expresión id es un lvalue.

¿Main es un identificador Java válido?

Uno de mis hijos está tomando Java en la escuela secundaria y tenía esto en una de sus pruebas: Cuál de los siguientes e ... ograma de prueba y el profesor lo ignoró y dice que la respuesta sigue siendo incorrecta. Es main un identificador válido?

En CSS Flexbox, ¿por qué no hay propiedades" justify-items "y" justify-self"?

Considere el eje principal y el eje transversal de un contenedor flexible:                                                  ... x. Terminaré reiterando la pregunta principal: {[27]]} ¿Por qué no hay propiedades "justify-items" y "justify-self"?

¿Sintaxis válida, pero sin valor en switch-case?

A través de un pequeño error, accidentalmente encontré esta construcción: int main(void) { char foo = 'c'; switch(f ... anzable, pero esto parece inútil. ¿Debería un compilador marcar esto como código inalcanzable? ¿Esto tiene algún propósito?

¿Puede el código C++ ser válido tanto en C++03 como en C++11, pero hacer cosas diferentes?

¿Es posible que el código C++ se ajuste tanto al estándar C++03 como al estándar C++11, pero hacer cosas diferentes dependiendo de bajo qué estándar se está compilando?

El programa está siendo compilado de manera diferente en 3 compiladores principales de C++. ¿Cuál es la correcta?

Como un seguimiento interesante (aunque no de gran importancia práctica) a mi pregunta anterior: ¿Por qué C++ nos permite ro ... la forma de msvc de dejar de declarar variable después de cambiar de tipo técnicamente con su typedef parece un poco rara)

Lambda volviendo a sí mismo: ¿es esto legal?

Considere este programa bastante inútil: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto ... eral, sino sobre la legalidad de esta forma específica de hacerlo. Pregunta relacionada: C++ lambda regresando a sí mismo.

C++11 introdujo un modelo de memoria estandarizado. ¿Qué significa? ¿Y cómo va a afectar la programación en C++?

C++11 introdujo un modelo de memoria estandarizado, pero ¿qué significa exactamente eso? ¿Y cómo va a afectar la programación ... nas de multi-threading, y lo que significa el modelo de memoria en general, por favor ayúdame a entender estos conceptos. :-)

int a [] = {1,2,}; Se permite una coma rara. Alguna razón en particular?

Tal vez no soy de este planeta, pero me parece que lo siguiente debería ser un error de sintaxis: int a[] = {1,2,}; //extra ... a ...), que es normal. Así que, de nuevo, ¿hay alguna razón en particular esta coma redundante es explícitamente ¿permitido?

¿Por qué el operador ternario con comas evalúa solo una expresión en el caso verdadero?

Actualmente estoy aprendiendo C++ con el libro C++ Primer y uno de los ejercicios en el libro es: Explique lo que hace l ... lrededor de la rama verdadera de esta manera:{[13]]} someValue ? (++x, ++y) : --x, --y; Pero todavía resultados en 11 10.

Cuando se usan encabezados C en C++, ¿deberíamos usar funciones de std:: o del espacio de nombres global?

C es algo, no exactamente, un subconjunto de C++. Así que podemos usar la mayoría de las funciones/encabezados de C en C++ ca ... aparece como std::printf("Hello world!);. Mi pregunta es, ¿es preferible usar std::printf(); en C++? ¿Hay alguna diferencia?

¿Está bien definida la operación "false < true"?

Define la especificación C++: la existencia del operador' menos que ' para los parámetros booleanos, y si es así, ¿el re ... (int argc, char* argv[]) { test(false, false); test(false, true); test(true, false); test(true, true); return 0; }

Copiar / mover asignación en std:: vector:: erase() y std:: deque:: erase()

En el proceso de responder otra pregunta Me topé con formulaciones ligeramente diferentes para std::vector::erase() y std::d ... pregunta es: ¿me perdí algo, o este es un tema (editorial) en el estándar? Actualización: He enviado un LWG edición #2477.

¿Es "else if" una sola palabra clave?

Soy nuevo en C++. A menudo veo una declaración condicional como la siguiente: if statement_0; else if statement_1; P ... s realmente una sentencia anidada if dentro de la else exterior como abajo? if statement_0; else if statement_1;

Lambda captura y parámetro con el mismo nombre - ¿quién sombrea el otro? (clang vs gcc)

auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using ... obre el parámetro foo estar sin usar. ¿Qué compilador sigue con más precisión el estándar de C++ aquí? Ejemplo de Wandbox

Definición del operador "= = " para Double

Por alguna razón estaba colándome en el código fuente de. NET Framework para la clase Double y descubrió que la declaración d ... ca para cada operador. ¿Cuál es el punto de tal definición? ¿Cómo funciona? ¿Por qué no crea una recursión infinita?

¿Por qué 019 no es un error de sintaxis de JavaScript? O por qué es 019 > 020

Si escribo 019 > 020 en la consola JavaScript (probado en Chrome y Firefox), obtengo la respuesta true. Esto se debe a qu ... Script para Java con JavaCC y tienen que prestar una atención especial a la especificación - y las desviaciones de la misma.)

¿Cuándo invocar una función miembro en una instancia nula resulta en un comportamiento indefinido?

Considere el siguiente código: #include <iostream> struct foo { // (a): void bar() { std::cout << "gman ... comportamiento indefinido. ¿(a) resulta en un comportamiento indefinido? ¿Qué pasa si ambas funciones (y x) son estáticos?

¿Es posible la referencia nula?

¿Esta pieza de código es válida (y tiene un comportamiento definido)? int &nullReference = *(int*)0; Tanto g++ como c ... null), pero podríamos comprobar si es null o no comprobando su dirección: if( & nullReference == 0 ) // null reference