Articles of c ++ 11

¿Por qué C ++ 11 no admite listas de inicializadores designados como C99?

Considerar: struct Person { int height; int weight; int age; }; int main() { Person p { .age = 18 }; } El código anterior es legal en C99, pero no es legal en C ++ 11. ¿Cuál es la lógica de que C ++ 11 no es compatible con una característica tan útil?

¿Admite C ++ las matrices de longitud variable?

No, espera, espera conmigo … Los VLA siempre fueron una extensión de GCC, pero fueron adoptados por C99: [C99: 6.7.5.2/4]: si el tamaño no está presente, el tipo de matriz es incompleto. Si el tamaño es * en lugar de ser una expresión, el tipo de matriz es un tipo de matriz de longitud variable […]

¿Puedo implementar un tipo de miembro auto-autónomo en C ++?

C ++ carece del equivalente de la palabra clave self de PHP , que se evalúa como el tipo de clase que lo incluye. Es bastante fácil falsificarlo por clase: struct Foo { typedef Foo self; }; pero tuve que escribir Foo nuevamente. Tal vez me equivoque un día y cause un error silencioso. ¿Puedo […]

Comstackndo C ++ 11 con g ++

Estoy tratando de actualizar mi comstackdor C ++ a C ++ 11. He buscado un poco y he llegado a la conclusión de que tengo que usar la bandera -std=c++0x o -std=gnu++0x , pero no sé muchas cosas sobre las banderas. ¿Alguien puede ayudarme? (Estoy usando Ubuntu 12.04.) Aquí está el error que obtengo del […]

¿El desbordamiento de enteros aún no está definido en C ++?

Como sabemos, el desbordamiento de entero con signo es un comportamiento indefinido . Pero hay algo interesante en la documentación cstdint C ++ 11: tipo entero con signo con un ancho de exactamente 8, 16, 32 y 64 bits, respectivamente, sin bits de relleno y utilizando complemento de 2 para valores negativos (proporcionado solo si […]

Concurrencia: atómico y volátil en el modelo de memoria C ++ 11

Una variable global se comparte en 2 subprocesos simultáneos en 2 núcleos diferentes. Los hilos escriben y leen de las variables. Para la variable atómica, ¿puede un hilo leer un valor obsoleto? Cada núcleo puede tener un valor de la variable compartida en su caché y cuando uno enhebra escrituras a su copia en un […]

Referencia no definida a constexpr char estático

Quiero tener una matriz static const char en mi clase. GCC se quejó y me dijo que debería usar constexpr , aunque ahora me dice que es una referencia indefinida. Si hago que la matriz no sea miembro, se comstack. Que esta pasando? // .hpp struct foo { void bar(); static constexpr char baz[] = […]

¿La devolución por referencia de valor es más eficiente?

por ejemplo: Beta_ab&& Beta::toAB() const { return move(Beta_ab(1, 1)); }

¿Cómo hacer que mi tipo personalizado funcione con “rango para bucles”?

Al igual que muchas personas en estos días, he estado probando las diferentes características que aporta C + 11. Uno de mis favoritos es el “rango para bucles”. Entiendo que: for(Type& v : a) { … } Es equivalente a: for(auto iv = begin(a); iv != end(a); ++iv) { Type& v = *iv; … } […]

¿Qué tan bien se admite Unicode en C ++ 11?

He leído y escuché que C ++ 11 es compatible con Unicode. Algunas preguntas sobre eso: ¿Qué tan bien soporta la biblioteca estándar de C ++ Unicode? ¿ std::string hace lo que debería? ¿Como lo uso? ¿Dónde hay problemas potenciales?