boost 内部编译错误:"use of undefined type 'boost::mpl::bool_<true>"
Compile error inside boost: "use of undefined type 'boost::mpl::bool_<true>"
我在编译大型 CPP 文件时遇到这个奇怪的错误,在这一行:
#include <boost/regex/v4/regex.hpp>
Error C2027 use of undefined type
'boost::mpl::bool_'
C:\github\microsoft\vcpkg\installed\x86-windows\include\boost\regex\v4\basic_regex_parser.hpp 59
在bool_fwd.hpp中我看到:
typedef bool_<true> true_;
typedef bool_<false> false_;
在 basic_regex_parser.hpp 中,这是生成错误的行:
inline boost::intmax_t umax()
{
return umax(mpl::bool_<std::numeric_limits<boost::intmax_t>::digits >= std::numeric_limits<std::size_t>::digits>());
}
看起来 basic_regex_parser.hpp
不包括 bool_fwd.hpp
但深入研究这些文件我不知道出了什么问题。
我已将#include 移动到 stdafx.h
文件的顶部,因此它位于任何其他 headers 之前,并获得相同的结果。我们最近从通过 vcpkg 手动构建 boost 1.68 => 1.76 切换了,但我不知道是哪个原因造成的。我们还切换到 C++17,我注意到 boost 依赖于 std::numeric_limits
,这可能是问题所在吗?
中的相同问题
我在编译大型 CPP 文件时遇到这个奇怪的错误,在这一行:
#include <boost/regex/v4/regex.hpp>
Error C2027 use of undefined type 'boost::mpl::bool_' C:\github\microsoft\vcpkg\installed\x86-windows\include\boost\regex\v4\basic_regex_parser.hpp 59
在bool_fwd.hpp中我看到:
typedef bool_<true> true_;
typedef bool_<false> false_;
在 basic_regex_parser.hpp 中,这是生成错误的行:
inline boost::intmax_t umax()
{
return umax(mpl::bool_<std::numeric_limits<boost::intmax_t>::digits >= std::numeric_limits<std::size_t>::digits>());
}
看起来 basic_regex_parser.hpp
不包括 bool_fwd.hpp
但深入研究这些文件我不知道出了什么问题。
我已将#include 移动到 stdafx.h
文件的顶部,因此它位于任何其他 headers 之前,并获得相同的结果。我们最近从通过 vcpkg 手动构建 boost 1.68 => 1.76 切换了,但我不知道是哪个原因造成的。我们还切换到 C++17,我注意到 boost 依赖于 std::numeric_limits
,这可能是问题所在吗?