在VS2017中切换到LLVM工具集以使用Boost 1.68构建代码时,我收到以下构建错误。该代码可以使用MSVC编译器很好地构建。 1> C:\ boost_1_68_0 \ boost / type_traits / has_trivial_move_assign.hpp(49):错误:没有名为“ is_assignable”的模板;您是说'std :: is_assignable'吗? 1> C:\ boost_1_68_0 \ boost / type_traits / intrinsics.hpp(233):注意:从宏“ BOOST_HAS_TRIVIAL_MOVE_ASSIGN”扩展
答案 0 :(得分:0)
我认为您的问题可能是__clang
与__clang__
来标识编译器。 Clang具有不同的预定义宏,具体取决于所使用的前端。由于这种混乱,您的boost可能无法包含标头boost/type_traits/is_assignable.hpp
,该标头定义了丢失的is_assignable
。
尝试这个:
在
boost / type_traits / has_trivial_move_assign.hpp
添加|| defined(__clang__)
测试c声的行
#if defined(__GNUC__) || defined(__clang)
#include <boost/type_traits/is_assignable.hpp>
制作:
#if defined(__GNUC__) || defined(__clang) || defined(__clang__)
#include <boost/type_traits/is_assignable.hpp>
Boost然后应包含is_assignable.hpp并进行构建。