Articles of c ++ 11

Inicialización de miembros de datos estáticos

¿Por qué la inicialización del miembro de datos estáticos debe estar fuera de la clase? class X { public: int normalValue = 5; //NSDMI static int i; }; int X::i = 0; ¿Por qué el miembro de datos estáticos (aquí “yo”) es solo una statement, no una definición?

C ++ Qt – ¿Cómo agregar “-std = c ++ 11” al archivo MAKE generado por qmake?

Estoy desarrollando un progtwig en Qt. Su archivo MAKE se genera automáticamente desde el archivo .pro. Necesito usar algún código que necesite la bandera -std = c ++ 11 para ser configurada para g ++. ¿Dónde en .pro debo agregar esta bandera? (Cambiar solo el Makefile no funcionará, ya que es sobreescrito por el nuevo, […]

¿Cuándo debería usar std :: thread :: detach?

En algún momento tengo que usar std::thread para acelerar mi aplicación. También sé que join() espera hasta que se complete un hilo. Esto es fácil de entender, pero ¿cuál es la diferencia entre llamar a detach() y no llamarlo? Pensé que sin detach() , el método del hilo funcionará usando un hilo de forma independiente. […]

¿Cómo convertir automáticamente enum fuertemente tipado en int?

#include struct a { enum LOCAL_A { A1, A2 }; }; enum class b { B1, B2 }; int foo( int input ) { return input; } int main(void) { std::cout<<foo(a::A1)<<std::endl; std::cout<<foo(static_cast(b::B2))<<std::endl; } El a::LOCAL_A es lo que la enumeración fuertemente tipada está tratando de lograr, pero hay una pequeña diferencia: las enumeraciones normales se […]

¿Cómo implementaría su propio locking lector / escritor en C ++ 11?

Tengo un conjunto de estructuras de datos que necesito proteger con un locking para lectores / escritores. Soy consciente de boost :: shared_lock, pero me gustaría tener una implementación personalizada usando std :: mutex, std :: condition_variable y / o std :: atomic para que pueda comprender mejor cómo funciona (y modificarla más tarde) . […]

¿En qué se diferencia “= default” de “{}” para el constructor y el destructor predeterminados?

Originalmente publiqué esto como una pregunta solo sobre destructores, pero ahora estoy agregando consideración del constructor predeterminado. Aquí está la pregunta original: Si quiero dar a mi clase un destructor que sea virtual, pero que sea lo mismo que generaría el comstackdor, puedo usar =default : class Widget { public: virtual ~Widget() = default; }; […]

Agrupación de subprocesos en C ++ 11

Preguntas relevantes : Acerca de C ++ 11: C ++ 11: std :: thread mancomunado? ¿Será asincrónico (launch :: async) en C ++ 11 que los pools de hilos se vuelvan obsoletos para evitar la costosa creación de hilos? Acerca de Boost: C + + subproceso hilos de reutilización de hilo boost :: thread y […]

¿La palabra clave ‘anular’ es solo una verificación de un método virtual anulado?

Por lo que entiendo, la introducción de la palabra clave override en C ++ 11 no es más que una verificación para asegurarse de que la función que se está implementando sea la override de una función virtual en la clase base. ¿Es asi?

Cómo detectar el soporte de C ++ 11 de un comstackdor con CMake

¿Hay alguna manera de dejar que CMake detecte automáticamente si un comstackdor admite C ++ 11 o no? Como sería bueno informar a los usuarios durante la ejecución de CMake que el código no se comstackrá ya que el comstackdor no es compatible con C ++ 11. Por el momento, configuré las banderas de C […]

C ++ 11 permite la inicialización en clase de miembros no estáticos y no const. ¿Qué cambió?

Antes de C ++ 11, solo podíamos realizar una inicialización en clase en miembros de const estáticos de tipo integral o de enumeración. Stroustrup discute esto en su C ++ FAQ , dando el siguiente ejemplo: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: […]