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

4 la respuesta

Declaraciones / definiciones como declaraciones en C y C ++

Estaba confundido cuando esto no se compilaría en C: int main() { for (int i = 0; i < 4; ++i) int a = 5; // A dependent statement may not be declaration return 0; }Estoy acostumbrado a C ++ donde esto se compilará. Solo me quedé boquiabierto por ...

4 la respuesta

Justificación de las comparaciones de punteros fuera de una matriz para ser UB

Entonces, el estándar (refiriéndose aN1570 [http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf]) dice lo siguiente sobre la comparación de punteros: C99 6.5.8 / 5 Operadores relacionales Cuando se comparan dos punteros, el resultado ...

2 la respuesta

Programa con encadenamiento de compilaciones de declaraciones de uso en MSVS y clang pero no en GCC

¿El siguiente programa está bien o mal formado según el estándar c ++? namespace X { int i; } namespace Y { using X::i; } int main() { using X::i; using Y::i; }Estoy obteniendo diferentes resultados con diferentes compiladores: MSVS: compila ...

2 la respuesta

Declaración de clase en el mismo alcance que el uso de compilaciones de declaración en GCC pero no en MSVS

¿El siguiente programa está bien formado de acuerdo con el estándar c ++? namespace X { class A; } namespace Y { using X::A; class A {}; } int main() {} Estoy obteniendo diferentes resultados con diferentes compiladores: gcc lo compila sin ...

1 la respuesta

Una declaración de uso no puede repetirse en el alcance de la función. ¿Porqué es eso?

En [namespace.udecl] / 10 tiene el siguiente ejemplo: namespace A { int i; } namespace A1 { using A::i; using A::i; // OK: double declaration } void f() { using A::i; using A::i; // error: double declaration } Este fragmento se compila en clang.

2 la respuesta

¿Se permite (o será) el uso de una sintaxis de plantilla familiar en expresiones lambda?

C ++ 14 introdujo lambdas genéricas. Mientras hojeaba las propuestas relacionadas que encontréN3418 [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3418.pdf]porFaisal Vali, Herb Sutter y Dave Abrahams. Allí la sección 2.2 se ...

1 la respuesta

¿Cómo se puede usar un tipo incompleto como parámetro de plantilla para vectorizar aquí?

Hasta que el siguiente programa sea legal y demás: #include <vector> struct Bar; struct Foo { using BarVec = std::vector<Bar>::size_type; }; struct Bar {}; int main() { Foo f; }¿Cómo?Bar es un tipo incompleto, por lo que el compilador no tiene ...

5 la respuesta

Función de retorno de la función C ++

¿En qué parte del estándar están prohibidas las funciones de retorno de funciones? Entiendo que son conceptualmente ridículos, pero me parece que la gramática los permitiría. Según esta página web, un "noptr-declarator [es] cualquier declarador ...

2 la respuesta

¿Cuál fue la razón para hacer que `return 0` al final de` main` sea opcional?

Comenzando con el estándar C99, se requiere que el compilador genere el equivalente de unreturn 0 oreturn EXIT_SUCCESS si noregreso se suministra al final demain. También hubo un cambio correspondiente e idéntico al estándar del lenguaje C ++ en ...

3 la respuesta

pedido de especialización parcial con contexto no deducido

De acuerdo con [temp.class.order] §14.5.5.2, la selección de una especialización parcial det en este ejemplo: template< typename > struct s { typedef void v, w; }; template< typename, typename = void > struct t {}; template< typename c > struct ...