我想在很长一段时间内第一次使用boost,并且当我包含boost/thread.hpp头文件时,在boost本身内部出现编译错误:在Visual Studio 2010 boost :: thread编译错误
c:\myproj\boost_1_46_0\boost\thread\win32\thread_heap_alloc.hpp(97): error C2061: syntax error : identifier 'heap_memory
c:\myproj\boost_1_46_0\boost\thread\detail\thread.hpp(134) : see reference to function template instantiation 'T *boost::detail::heap_new<boost::detail::thread_data<F>,void(__cdecl *)(void)>(A1 &&)' being compiled
with
[
T=boost::detail::thread_data<void (__cdecl *)(void)>,
F=void (__cdecl *)(void),
A1=void (__cdecl *)(void)
]`
发生这种情况只是通过包含标题,它似乎没有任何关系与我的代码,但我不明白该怎么办,任何人都可以帮助吗?
我怎么没看到boost内部的代码可以编译,它使用变量名('heap_memory')作为类型转换: 'void * const heap_memory = allocate_raw_heap_memory ... T * const data = new(heap_memory)T .... ' –
我以为我有w通过定义'BOOST_NO_RVALUE_REFERENCES'来引发这个问题,但是这只是推迟了这个问题,直到我试图调用一个带参数的构造函数。升压代码只是不明智! –
VS2010确实有右值引用,所以这不是问题。 'new(heap_memory)'不是一个类型转换,而是一个新的位置。该对象构建于* heap_memory,刚分配。 –