std::thread 通过引用传递调用复制构造函数
问题:
传递时类 Log 的对象通过引用传递到 std::thread 时,会发生编译器错误,尽管预期引用传递应绕过复制构造函数。相反,通过指针传递对象可以解决问题。
说明:
此行为的根本原因是 std::thread 需要通过以下方式传递其参数价值。通过引用传递,如 Log &logger 中所示,与传递指针具有相同的效果,即它仍然需要复制构造函数来生成要传递给线程的对象的副本。
解决方案:
要重新获得引用语义,请使用 std::reference_wrapper:
std::thread newThread(session, &sock, std::ref(logger));
注意:
以上是为什么通过引用 std::thread 传递类对象仍然会触发复制构造函数?的详细内容。更多信息请关注PHP中文网其他相关文章!