Articles of c ++ 11

¿Cómo capturar un unique_ptr en una expresión lambda?

He probado lo siguiente: std::function getAction(std::unique_ptr &&psomething){ //The caller given ownership of psomething return [psomething](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } Pero no comstack. ¿Algunas ideas? ACTUALIZAR: Como se sugirió, se requiere una nueva syntax para especificar explícitamente que necesitamos transferir la propiedad a la lambda, ahora estoy pensando […]

Cómo codificar un operador de módulo (%) en C / C ++ / Obj-C que maneja números negativos

Una de mis mascotas odia los lenguajes derivados de C (como matemático) es que (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly ¿Cuál es la mejor solución? C ++ permite la posibilidad de plantillas y sobrecarga del operador, pero ambas son aguas turbias para mí. ejemplos recibidos con […]

¿Debería el estilo de syntax del tipo de retorno final convertirse en el predeterminado para los nuevos progtwigs de C ++ 11?

C ++ 11 admite una nueva syntax de función: auto func_name(int x, int y) -> int; Actualmente esta función se declararía como: int func_name(int x, int y); El nuevo estilo no parece ser ampliamente adoptado aún (por ejemplo, en el gcc stl) Sin embargo, ¿debería preferirse este nuevo estilo en todos los nuevos progtwigs de […]

¿Por qué se devuelve el destructor de un futuro del locking `std :: async`?

Al intentar responder a otra pregunta de Stackoverflow , me di cuenta de que este simple fragmento de C ++ 11 está implícitamente bloqueando el hilo de llamada: std::async(std::launch::async, run_async_task) Para mí, esto habría parecido la manera canónica de C ++ 11 de iniciar una tarea de forma asíncrona sin preocuparme por el resultado. En […]

Crear matriz constexpr N-elemento en C ++ 11

Hola, estoy aprendiendo C ++ 11, me pregunto cómo hacer un constexpr 0 a n array, por ejemplo: n = 5; int array[] = {0 … n}; entonces array puede ser {0, 1, 2, 3, 4, 5}

¿Cuáles son las ventajas de usar nullptr?

Esta pieza de código conceptualmente hace lo mismo con los tres punteros (inicialización segura del puntero): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; Entonces, ¿cuáles son las ventajas de asignar punteros nullptr sobre asignarles los valores NULL o 0 ?

¿Cómo funciona std :: forward?

Posible duplicado: Ventajas de usar adelante Sé lo que hace y cuándo usarlo, pero todavía no puedo entender cómo funciona. Sea lo más detallado posible y explique cuándo std::forward sería incorrecto si se le permitiera usar la deducción del argumento de la plantilla. Parte de mi confusión es esta: “Si tiene un nombre, es un […]

Mueva el operador de asignación y `if (this! = & Rhs)`

En el operador de asignación de una clase, generalmente debe verificar si el objeto que se le asignó es el objeto que lo invoca para no arruinarlo: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } ¿Necesita lo mismo para el operador de asignación de movimiento? […]

¿Cuál es la diferencia entre std :: move y std :: forward

Vi esto aquí: Move Constructor llamando a la clase base Move Constructor Podría alguien explicar: la diferencia entre std::move y std::forward , preferiblemente con algunos ejemplos de código? Cómo pensarlo fácilmente, y cuándo usarlo

¿Cómo habilito C ++ 11 en gcc?

Uso gcc 4.8.1 desde http://hpc.sourceforge.net en Mac OSX Mountain Lion. Estoy intentando comstackr un progtwig C ++ que utiliza la función to_string en . Necesito usar la bandera -std=c++11 cada vez: g++ -std=c++11 -o testcode1 code1.cpp ¿Hay alguna manera de incluir esta bandera por defecto?