Quiero escribir una función que pueda aceptar cualquier tipo de búfer contiguo (por ejemplo, std::array, std::vector, matriz sin formato, etc.) desde su lugar de llamada. He ideado dos métodos. Método #1: void func( int* const buffer, const std::size_t expectedTokenCount ); Aquí, expectedTokenCount es el número máximo de elementos que se . . . Read more
Ya sé que el movimiento automático no funciona con la función que devuelve un valor de entrada de referencia R-valor. ¿Pero por qué? A continuación se muestra un ejemplo de código en el que el movimiento automático no funciona. Widget makeWidget(Widget&& w) { …. return w; // El compilador hace . . . Read more
¿Está garantizada la “elisión de movimiento” en C++17? Déjame explicarte a qué me refiero con esto. En casi todos los artículos sobre lo que se ha introducido en C++17, se puede encontrar el término: “elisión de copia garantizada para RVO”, que es bastante autoexplicativo. ¿Pero qué pasa con la construcción . . . Read more
Considere la siguiente definición de Person: struct Person { Person() { std::cout << "construct, "; } Person(const Person&) { std::cout << "copy\n"; } Person(Person&&) { std::cout << "move\n"; } }; Y tres funciones diferentes para crear un Person: Person create1() { std::cout << "create1: "; Person p1{}; return p1; } . . . Read more