使用Boost 1.68 / LLVM / VS2017时出现“ is_assignable”错误

时间:2018-09-19 18:33:07

标签: boost visual-studio-2017 llvm-clang

在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”扩展

1 个答案:

答案 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并进行构建。