Я наблюдал разницу в поведении между новой библиотекой в Visual Studio 11 Beta и Boost с помощью thread () и ref ().Мне интересно, кто прав.Это может быть и то, и другое, если стандарт отличается от первоначальной реализации Boost.(Но я не собираюсь пытаться расшифровать стандартные ...)
Я бы попробовал это с MinGW ... Увы, AFAIK, не работает для 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;
}