這個問題在Windows上基於CMake編譯Caffe-SSD的GPU版時出現。
網上找到的博客貼出的解決辦法是刪掉regex和rv相關代碼,甚至不編譯detection_output_layer.cu。。。這和“干掉提出問題者”有什么區別呢?
我的解決辦法:
在caffe windows依賴包中修改libraries_v120_x64_py27_1.1.0\libraries\include\boost-1_61\boost\regex\v4\perl_matcher.hpp
文件:
#include <boost/regex/v4/iterator_category.hpp>
后,添加:
#ifdef _MSC_VER
#pragma pointers_to_members( full_generality, single_inheritance )
#endif
解釋一下:
在 MSDN上對於
pointer_to_memmers
的解釋 提到,其語法為:#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
並且,
most-general-representation
的默認值為best_case
。
通過google檢索#pragma pointers_to_members
發現,這個宏應該是cl.exe特有的,gcc的話我沒有找到,llvm的話似乎有人提issue要去實現。