Articles of c ++ 11

std :: next_permutation Explicación de la implementación

Tenía curiosidad sobre cómo std:next_permutation se implementó, así que std:next_permutation versión gnu libstdc++ 4.7 y desinfecté los identificadores y el formato para producir la siguiente demo … #include #include #include using namespace std; template bool next_permutation(It begin, It end) { if (begin == end) return false; It i = begin; ++i; if (i == end) […]

¿Qué significa “predeterminado” después de una statement de función de clase?

He visto el default usado junto a las declaraciones de funciones en una clase. ¿Qué hace? class C { C(const C&) = default; C(C&&) = default; C& operator=(const C&) & = default; C& operator=(C&&) & = default; virtual ~C() { } };

¿Cuáles son las reglas para el token “…” en el contexto de plantillas variadic?

En C ++ 11 hay plantillas variadas como esta: template unique_ptr make_unique( Args&&… args ) { return unique_ptr(new T(std::forward(args)…)); } Hay algunas curiosidades sobre esto: La expresión std::forward(args)… usa tanto Args como args pero solo un … token. Además, std::forward es una función de plantilla no variadica que toma solo un parámetro de plantilla y […]

No hay coincidencias con c ++ 11 regex

¿Por qué esto no encuentra coincidencias en g ++ (Debian 4.6.3-1) 4.6.3 o clang versión 3.2 (tronco 159457) #include #include #include using namespace std; int main() { string line(“test”); regex pattern(“test”,regex_constants::grep); smatch result; bool ret(false); ret = regex_search(line,result,pattern); cout << boolalpha << ret << endl; cout << result.size() << endl; return 0 ; } salida […]

Delegado Constructor C ++

¿Lo estoy haciendo bien? Intento delegar un constructor de clase C ++ ya que básicamente es el mismo código que se repite 3 veces. Leí en C ++ x11 y leí que g ++ 4.7.2 lo permite, pero no estoy seguro si lo estoy haciendo derecho: Bitmap::Bitmap(HBITMAP Bmp) { //Construct some bitmap stuff.. } Bitmap::Bitmap(WORD […]

Constructor de listas de inicializadores incluidos

Tengo un fenotipo de clase con el siguiente constructor: Phenotype(uint8 init[NUM_ITEMS]); Puedo crear un fenotipo como este: uint8 data[] = {0,0,0,0,0}; Phenotype p(data); Pero me sale un error cuando bash crear uno como este: Phenotype p = {0,0,0,0,0}; Salida: $ make g++ -Wall -g main.cpp -std=c++0x main.cpp: In function ‘int main(int, char**)’: main.cpp:109: error: no […]

Comprobar rasgos para todos los argumentos de plantilla variadic

Antecedentes: he creado la siguiente clase C , cuyo constructor debe tomar N variables de tipo B& : class A; class B { A* getA(); }; template class C { public: template inline C(Args&… args) : member{args.getA()…} {} private: std::array member; }; Problema: mi problema es cómo restringir los variados Args para que sean todos […]

¿Por qué auto x {3} deduce una initializer_list?

Me encanta el auto en C ++ 11. Es maravilloso. Pero tiene una inconsistencia que realmente me pone nerviosa, porque me tropiezo con ella todo el tiempo: int i = 3; // i is an int with value 3 int i = int{3}; // i is an int with value 3 int i(3); // i […]

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, […]