好吧..首先,我必须说我使用BOOST和它的源代码(我必须)。 我既是一个BOOST也是一个C++新手,但我并不陌生编码(我习惯于托管语言)。我在一个有点大项目遇到了这个问题,那么我转载它在这个小的代码片段,我在这里提出:BOOST线程属性的使用导致绑定编译错误
#include <boost/thread.hpp>
void foo(int bar) {
printf("Chu %d!",bar);
}
int main() {
boost::thread_attributes attrs;
boost::thread causeTrouble(attrs,foo,42); // <-- Probably problematic line
causeTrouble.join();
}
根据BOOST 1.52.0 Documentation该段应编译和运行正常;但是,它给了我一个Boost库的头文件,一个奇怪的编译问题(没有其他错误或警告存在):
<boost_path>/bind/bind.hpp:313: error: no match for call to '(boost::thread_attributes) (void (*&)(int), int&)
对我来说,它看起来像有没有实际的boost ::线程(升压:: thread_attributes ,F f)构造函数,即使它应该按照之前链接的文档。 无论如何,有什么好笑的是,无论是以下行做编译罚款:
boost::thread noTrouble(attrs,foo);
和
boost::thread noTroubleEither(foo,42);
即使我彻底搜查的StackOverflow和互联网的休息,我不知道在哪里转我的头:(其实这是我第一次被迫实际上问一个新的问题。帮助!
哪个编译器? – user7116
我正在使用GCC编译器 –
哪个版本?它支持可变模板和rvale引用吗? –