Tag: LANGUAGE-LAWYER
¿Por qué se compila el siguiente código? #include <vector> #include <iostream> struct Foo { std::vector<int> bar = {1, 2, 3}; }; int main() { Foo foo1; const Foo& foo2 = foo1; std::vector<int> target; std::move(foo2.bar.begin(), foo2.bar.end(), std::back_inserter(target)); return 0; } La documentación de std::move dice: Después de esta operación, los elementos . . . Read more
Esto surgió mientras pensaba en https://stackoverflow.com/questions/70230298/thread-sanitizer-warnings-after-using-parallel-stdfor-each/70271363#70271363. Algoritmos como std::for_each con políticas de ejecución en paralelo pueden ejecutar código en hilos de trabajo creados por la implementación. ¿Estos hilos se sincronizan con la llamada y el retorno de for_each por parte del hilo que realiza la llamada, o algo así? El . . . Read more
POSIX requiere (creo) que los punteros a funciones puedan ser almacenados en una variable de tipo void* y/o pasados a funciones que esperen un argumento de tipo void*, aunque esto sea estrictamente no estándar. Mi pregunta es la siguiente: si pruebo una variable/argumento de este tipo para la no existencia . . . Read more
Supongamos que tengo algo similar a esto: class Base { public: Base(int value) : value(value) {} int getValue() const { return value; } private: int value_; }; class Derived : public Base { public: // Derived solo tiene funciones no virtuales. No se agregaron miembros de datos adicionales. int getValueSquared() . . . Read more
Documentación del lenguaje de programación C La Precedencia y orden de evaluación establece: La dirección de evaluación no afecta los resultados de expresiones que incluyen más de una operación de multiplicación (*), adición (+) o operador de bit a bit binario (&, | o ^) en el mismo nivel. El . . . Read more