c++ thread function accepting object by value: why does std::ref(obj) compile?
#include <iostream> #include <thread> template<int Num> class MyClass { public: MyClass(int val) : val_(val) {} private: int val_; }; template<int Num> void threadFunction(MyClass<Num> myObj) { std::cout << “Inside thread” << std::endl; } int main() { MyClass<1> obj(42); std::thread t1(threadFunction<1>, obj); // <– pass by value std::thread t2(threadFunction<1>, std::ref(obj)); // <– pass by reference t1.join(); t2.join(); […]