Articles of c ++ 11

¿Es correcto este comportamiento de vector :: resize (size_type n) en C ++ 11 y Boost.Container?

Tengo una aplicación C ++ 03 en la que los tipos std::vector se utilizan como almacenamientos intermedios temporales. Como tal, a menudo se les cambia el tamaño usando std::vector::resize() para garantizar que sean lo suficientemente grandes como para contener los datos requeridos antes de su uso. El prototipo C ++ 03 para esta función es […]

std :: paso de hilo por referencia llamadas copia constructor

Bueno, tengo un problema con pasar datos a un hilo usando std :: thread. Pensé que entendía la semántica general de los constructores de copias, etc. pero parece que no entiendo el problema. Tengo una clase simple llamada Log que ha ocultado su constructor de copia así: class Log { public: Log(const char filename[], const […]

¿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? […]