Articles of c ++ 11

¿Cómo garantizar el orden de evaluación de argumentos cuando se llama a un objeto de función?

Las respuestas a la pregunta sobre cómo evitar el orden de ejecución indefinido para los constructores al usar std :: make_tuple llevaron a una discusión durante la cual aprendí que se puede garantizar el orden de evaluación de los argumentos para los constructores: Usando una lista de inicios arriostrados el orden está garantizado de izquierda […]

std :: to_string: más de una instancia de función sobrecargada que coincide con la lista de argumentos

counter es un int void SentryManager::add(std::string name,std::shared_ptr){ name = name + std::to_string(counter); } ¿Cuál sería la mejor manera de detener este error? Cuando estaba siendo flojo acabo de hacer int por long long (o algo así), pero estoy seguro de que hay una mejor manera de resolver esto. Mensaje de error: sentrymanager.cpp(8): error C2668: ‘std::to_string’ […]

¿Reutilizando un contenedor movido?

¿Cuál es la forma correcta de reutilizar un contenedor movido? std::vector container; container.push_back(1); auto container2 = std::move(container); // ver1: Do nothing //container2.clear(); // ver2: “Reset” container = std::vector() // ver3: Reinitialize container.push_back(2); assert(container.size() == 1 && container.front() == 2); De lo que he leído en el borrador estándar de C ++ 0x; ver3 parece ser […]

Cómo se usa std :: unordered_map

c ++ unordered_map manejo de colisiones, cambio de tamaño y repetición Esta es una pregunta anterior abierta por mí y he visto que estoy teniendo mucha confusión sobre cómo se implementa unordered_map. Estoy seguro de que muchas otras personas comparten esa confusión conmigo. Basado en la información que conozco sin leer el estándar: Cada implementación […]

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