gpt4 book ai didi

c++ - 在 C++11 中,您能否将引用的基类传递给线程的构造函数并获得多态行为?

转载 作者:可可西里 更新时间:2023-11-01 17:58:52 25 4
gpt4 key购买 nike

我观察到 Visual Studio 11 Beta 中的新库与使用 thread() 和 ref() 的 Boost 之间的行为差​​异。我想知道谁是对的。如果标准偏离了 Boost 的原始实现,则两者都可能。 (但我不打算尝试破译标准语......)

我会用 MinGW 试一试......唉,据我所知, 不适用于 MinGW。

那么,第一个问题是,gcc 和 Clang 是否表现出相同的编译失败?如果他们不这样做,我将针对 VS 提交错误。第二个问题可能是,如果编译失败是正确的,我的解决方法是什么来获得 Boost 给我的东西(除了继续使用 Boost)?

我想我确实有第三个问题...我正在做的事情是否符合犹太洁食标准?

class base
{
public:
virtual void operator()() = 0;
};

class derived : public base
{
public:
virtual void operator()()
{
cout << "derived" << endl;
}
};

int main()
{
base *b = new derived;

std::thread t(std::ref(*b)); // Nasty compilation errors.

boost::thread t(boost::ref(*b)); // Works fine.

t.join();

return 0;
}

最佳答案

我针对 Visual Studio 11 Beta 提交了一个错误 here .还没有状态。当我得到它时,将编辑这篇文章的状态。

编辑:根据错误报告中的更新,已在 VS 2015 RTM 中修复。

关于c++ - 在 C++11 中,您能否将引用的基类传递给线程的构造函数并获得多态行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9921588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com