我想在很長一段時間內第一次使用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,剛分配。 –