Articles of c ++ 14

¿Sigue siendo un puntero con la dirección y el tipo correctos un puntero válido desde C ++ 17?

(En referencia a esta pregunta y respuesta .) Antes del estándar C ++ 17, la siguiente oración se incluyó en [basic.compound] / 3 : Si un objeto de tipo T está ubicado en una dirección A, se dice que un puntero de tipo cv T * cuyo valor es la dirección A apunta a ese […]

¿Cuándo debería usar la deducción automática del tipo de devolución C ++ 14?

Con GCC 4.8.0 lanzado, tenemos un comstackdor que admite la deducción automática del tipo de retorno, parte de C ++ 14. Con -std=c++1y , puedo hacer esto: auto foo() { //deduced to be int return 5; } Mi pregunta es: ¿Cuándo debería usar esta función? ¿Cuándo es necesario y cuándo hace que el código sea […]

Punteros en c ++ después de eliminar

Después de leer muchas publicaciones sobre esto, quiero aclarar el siguiente punto: A* a = new A(); A* b = a; delete a; A* c = a; //illegal – I know it (in c++ 11) A* d = b; //I suppose it’s legal, is it true? Entonces, la pregunta es sobre usar el valor de […]

¿Puede devolver una variable local por valor en C ++ 11/14, lo que da como resultado que el valor de retorno se construya con rvalue cuando no se trata de copiar / mover?

Sé que en la siguiente situación el comstackdor es libre de moverse: construye el valor de retorno de makeA (pero también puede eludir la copia o moverlo por completo): struct A { A(A&); A(A&&); }; A makeA() { A localA; return localA; } Lo que me pregunto es si el comstackdor puede construir un objeto […]

C ++ 11: Corregir la inicialización de std :: array?

Si inicializo un std :: array de la siguiente manera, el comstackdor me da una advertencia acerca de los paréntesis faltantes std::array a = {1, 2, 3, 4}; Esto soluciona el problema: std::array a = {{1, 2, 3, 4}}; Este es el mensaje de advertencia: missing braces around initializer for ‘std::array::value_type [4] {aka int [4]}’ […]

¿Cómo implementar la función make_unique en C ++ 11?

Mi comstackdor no es compatible con make_unique. Cómo escribir uno? template unique_ptr make_unique( Args&&… args );

¿Por qué usar std :: bind sobre lambdas en C ++ 14?

Antes de C ++ 11 usaba boost::bind o boost::lambda mucho. La parte de bind convirtió en la biblioteca estándar ( std::bind ), la otra parte se convirtió en parte del lenguaje central (C ++ lambdas) y facilitó el uso de lambdas. Hoy en día, casi no uso std::bind , ya que puedo hacer casi cualquier […]