Articles of c ++ 11

¿Cómo implementar realmente la regla de cinco?

ACTUALIZAR en la parte inferior q1: ¿Cómo implementaría la regla de cinco para una clase que maneja recursos bastante pesados, pero de los cuales quiere que se transmita por valor porque eso simplifica y embellece su uso? ¿O no son necesarios los cinco elementos de la regla? En la práctica, estoy comenzando algo con imágenes […]

¿Requiere std :: mt19937 calentamiento?

He leído que muchos generadores de números pseudoaleatorios requieren muchas muestras para “calentar”. ¿Es ese el caso cuando se utiliza std :: random_device para sembrar std :: mt19937, o podemos esperar que esté listo después de la construcción? El código en cuestión: #include std::random_device rd; std::mt19937 gen(rd());

¿Cuándo es std :: weak_ptr útil?

Empecé a estudiar punteros inteligentes de C ++ 11 y no veo ningún uso útil de std::weak_ptr . ¿Alguien puede decirme cuándo std::weak_ptr es útil / necesario?

¿Por qué copiamos y luego nos movemos?

Vi un código en el que alguien decidió copiar un objeto y luego moverlo a un miembro de datos de una clase. Esto me dejó en la confusión en que pensé que todo el punto de movimiento era evitar copiar. Aquí está el ejemplo: struct S { S(std::string str) : data(std::move(str)) {} }; Aquí están […]

Convierta entre cadena, u16string y u32string

He estado buscando una forma de convertir entre los tipos de cadena Unicode y encontré este método . No solo no entiendo completamente el método (no hay comentarios) sino que también el artículo implica que en el futuro habrá mejores métodos. Si este es el mejor método, ¿podría indicar qué lo hace funcionar? Si no, […]

¿Cómo almacenar argumentos de plantilla variadic?

¿Es posible almacenar un paquete de parámetros de alguna manera para un uso posterior? template class Action { private: std::function f; T… args; // <— something like this public: Action(std::function f, T… args) : f(f), args(args) {} void act(){ f(args); // <— such that this will be possible } } Luego más adelante: void main(){ […]

Pasar punteros compartidos como argumentos

Si declaro un objeto envuelto en un puntero compartido: std::shared_ptr myClassObject(new myClass()); entonces quería pasarlo como argumento a un método: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr arg1) { arg1->someField = 4; } ¿Lo anterior simplemente incrementa el recuento de referencias de shared_pt y todo está bien? ¿O deja un puntero colgando? ¿Todavía se supone que […]

Significado de = eliminar después de statement de función

class my_class { … my_class(my_class const &) = delete; … }; ¿Qué significa = delete significa en ese contexto? ¿Hay otros “modificadores” (que no sean = 0 y = delete )?

¿Cómo puedo obtener de manera confiable la dirección de un objeto cuando el operador está sobrecargado?

Considere el siguiente progtwig: struct ghost { // ghosts like to pretend that they don’t exist ghost* operator&() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &clyde; // darn; that’s not clyde’s address :'( } ¿Cómo obtengo la dirección de clyde ? Estoy buscando una solución que funcione […]

C ++ 11: la statement de rango para la duración de la vida “range-init”?

En el último estándar de C ++ implica que: for (foo : bar) baz; es equivalente a: { auto && r = bar; for ( auto it = r.begin(), end = r.end(); it != end; ++it ) { foo = *it; baz; } } Cuando bar en lo anterior es una llamada a función que […]