Articles of c ++ 11

¿Qué es herencia de constructor?

En C ++ 11, ¿qué se entiende por heredar el constructor? Si es lo que creo que es (el constructor de la clase Base se incluye en el scope de la clase derivada), ¿cuáles son sus implicaciones en mi código? ¿Cuáles son las aplicaciones de tal característica?

¿Debo usar std :: function o un puntero de función en C ++?

Cuando implemente una función de callback en C ++, ¿debería seguir utilizando el puntero de función de estilo C? void (*callbackFunc)(int); O debería hacer uso de std :: function: std::function callbackFunc;

Pretty-print std :: tuple

Este es un seguimiento de mi pregunta anterior sobre los envases STL de impresión bonita , para lo cual logramos desarrollar una solución muy elegante y completamente general. En este siguiente paso, me gustaría incluir impresión bonita para std::tuple , utilizando plantillas variadic (así que esto es estrictamente C ++ 11). Para std::pair , simplemente […]

¿Cuáles son las diferencias entre C-like, constructor e inicialización uniforme?

TTBOMK, hay tres formas de inicializar una variable en C ++. int x = 0; // C-like initialization int x (0); // Constructor initialization int x {0}; // Uniform initialization La inicialización uniforme se introdujo para C ++ 11 para proporcionar una syntax más uniforme para inicializar diferentes tipos de variables, lo que requería una […]

Bonita forma de agregar un vector a sí mismo

Quiero duplicar los contenidos del vector y quiero que se adjunten al final del vector original, es decir v[i]=v[i+n] for i=0,2,…,n-1 Estoy buscando una buena manera de hacerlo, no con un bucle. Vi std::vector::insert pero la versión iterativa prohíbe un iterador a *this (es decir, el comportamiento no está definido). También probé std::copy siguiente manera […]

Desprecio de la palabra clave estática … ¿no más?

En C ++, es posible usar la palabra clave static dentro de una unidad de traducción para afectar la visibilidad de un símbolo (ya sea una statement de función o variable). En n3092, esto estaba en desuso: Anexo D.2 [depr.static] El uso de la palabra clave estática está en desuso al declarar objetos en el […]

¿Por qué el comportamiento de std :: memcpy no estaría definido para los objetos que no son TriviallyCopyable?

De http://en.cppreference.com/w/cpp/string/byte/memcpy : Si los objetos no son TriviallyCopyable (por ejemplo, escalares, matrices, estructuras compatibles con C), el comportamiento no está definido. En mi trabajo, hemos utilizado std::memcpy durante mucho tiempo para intercambiar bit a bit objetos que no son TriviallyCopyable usando: void swapMemory(Entity* ePtr1, Entity* ePtr2) { static const int size = sizeof(Entity); char […]

¿Las referencias de validación de const tienen algún uso?

Supongo que no, pero me gustaría confirmarlo. ¿Hay algún uso para const Foo&& , donde Foo es un tipo de clase?

¿El argumento de plantilla (la firma) de std :: function no es parte de su tipo?

Dado el siguiente código, ¿cuál es el motivo de la ambigüedad? ¿Puedo eludirlo o tendré que guardar los moldes explícitos (molestos)? #include using namespace std; int a(const function& f) { return f(); } int a(const function& f) { return f(0); } int x() { return 22; } int y(int) { return 44; } int main() […]

¿Qué es “Expresión SFINAE”?

En http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx , el equipo de VC ++ declara oficialmente que aún no han implementado la función principal de C ++ 11, “Expresión SFINAE”. Sin embargo, los siguientes ejemplos de código copiados de http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html son aceptados por el comstackdor de VC ++. Ejemplo 1: template struct A {}; char xxx(int); char xxx(float); template A f(T){} […]