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

最佳答案

我认为您的问题可能是__clang__clang__来标识编译器。 Clang具有不同的预定义宏,具体取决于所使用的前端。由于这种困惑,您的boost可能无法包含 header boost/type_traits/is_assignable.hpp,该 header 定义了您缺少的is_assignable
尝试这个:

boost/type_traits/has_trivial_move_assign.hpp
|| defined(__clang__)添加到测试 clang 的行

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

关于boost - 使用Boost 1.68/LLVM/VS2017时“is_assignable”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52412203/

10-13 07:34
查看更多