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,这可能是问题所在吗?

这不受支持,请参阅 https://github.com/boostorg/regex/issues/145

中的相同问题