Articles of c ++ 11

C ++: ¿Puede una macro expandir “abc” en ‘a’, ‘b’, ‘c’?

Escribí una plantilla variadica que acepta una cantidad variable de parámetros de caracteres, es decir, template struct Foo; Me preguntaba si había algún truco macro que me permitiera crear una instancia con syntax similar a la siguiente: Foo o Foo o Foo etc. Básicamente, cualquier cosa que te impida escribir los caracteres individualmente, como Foo […]

¿Qué puedo y no puedo especializar en el espacio de nombres estándar?

Los usuarios pueden agregar especializaciones explícitas al std nombres std . Sin embargo, hay algunas plantillas de las que estoy explícitamente prohibido especializarme. ¿Qué plantillas puedo y no puedo especializar?

¿Cómo crear eventos de temporizador usando C ++ 11?

¿Cómo crear eventos de temporizador usando C ++ 11? Necesito algo como: “Llámame después de 1 segundo a partir de ahora”. ¿Hay alguna biblioteca?

¿Por qué no hay un rasgo de tipo std :: is_struct?

Lo he visto para comprobar si un tipo T es una clase que puedo usar: bool isClass = std::is_class::value; Devuelve verdadero para ambas clases y estructuras. Sé que en C ++ son casi lo mismo, pero me gustaría saber por qué no hay una distinción entre ellos en el rasgo de tipo. ¿Siempre es inútil […]

En C ++, ¿sigue siendo una mala práctica devolver un vector de una función?

Versión corta: es común devolver objetos grandes, como vectores / matrices, en muchos lenguajes de progtwigción. ¿Este estilo ahora es aceptable en C ++ 0x si la clase tiene un constructor de movimiento, o los progtwigdores de C ++ lo consideran extraño / feo / abominable? Versión larga: ¿ en C ++ 0x esto todavía […]

Bueno, ¿cómo funciona el eliminador personalizado de std :: unique_ptr?

De acuerdo con N3290, std::unique_ptr acepta un argumento delegador en su constructor. Sin embargo, no puedo conseguir que funcione con Visual C ++ 10.0 o MinGW g ++ 4.4.1 en Windows, ni con g ++ 4.6.1 en Ubuntu. Por lo tanto, me temo que mi comprensión de esto es incompleta o incorrecta, no puedo ver […]

Elegir entre std :: map y std :: unordered_map

Ahora que std tiene un mapa hash real en unordered_map , ¿por qué (o cuándo) seguiría utilizando el viejo map en lugar de unordered_map en los sistemas en los que realmente existe? ¿Hay alguna situación obvia que no pueda ver de inmediato?

Cómo implementar singleton seguro multiproceso en C ++ 11 sin usar

Ahora que C ++ 11 tiene multiprocesamiento, me preguntaba cuál es la forma correcta de implementar singleton perezosa inicializado sin usar mutexes (por razones de rendimiento). Se me ocurrió esto, pero no soy realmente bueno escribiendo código sin bloque, así que estoy buscando algunas soluciones mejores. // ConsoleApplication1.cpp : Defines the entry point for the […]

¿Existe una clase de rango en C ++ 11 para usar con rangos basados ​​en rangos?

Me encontré escribiendo esto hace un momento: template class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } bool operator ==(const iterator &other) const { return […]

La nueva palabra clave = predeterminada en C ++ 11

No entiendo por qué alguna vez haría esto: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Por qué no solo decir: S() {} // instead of S() = default; ¿por qué traer una nueva palabra clave para eso?