我正在尝试将 boost.thread 与 metrowerks codewarrior 5.5.3 一起使用;在标头 thread.hpp 中,我收到他正在重新定义 thread::thread_data 的错误:
class BOOST_THREAD_DECL thread
{
private:
...
template<typename F>
struct thread_data:
detail::thread_data_base
{
F f;
thread_data(F f_):
f(f_)
{}
thread_data(detail::thread_move_t<F> f_):
f(f_)
{}
void run()
{
f();
}
};
...
};
template<typename F>
struct thread::thread_data<boost::reference_wrapper<F> >:
detail::thread_data_base
{
F& f;
thread_data(boost::reference_wrapper<F> f_):
f(f_)
{}
void run()
{
f();
}
};
我看到,实际上,thread::thread_data 似乎被声明了两次。那里使用了哪些 C++ 功能?我怎样才能克服编译器的缺陷?