Boost的问题.Json库



有人可以帮助我的错误,我得到时,包括:

#include <boost/json/src.hpp>

错误是:

In file included from /usr/local/include/boost/json/src.hpp:27:
In file included from /usr/local/include/boost/json.hpp:15:
In file included from /usr/local/include/boost/json/array.hpp:16:
In file included from /usr/local/include/boost/json/storage_ptr.hpp:14:
In file included from /usr/local/include/boost/json/memory_resource.hpp:16:
/usr/local/include/boost/container/pmr/polymorphic_allocator.hpp:132:23: error: expected a class name after '~' to name a destructor
{  (void)p; p->~U(); }

我的CMake配置有:

find_package(Boost 1.80.0 REQUIRED COMPONENTS timer json)

target_link_libraries(device_monitor
Boost::timer
Boost::json
)

显然您在某处将U定义为其他东西。预处理器宏是不卫生的,所以要避免它。

我猜你是在某种Windows平台上,U()是一个"智能"的宏。包装某种类型的字符串字面值(例如,做一些与unicode相关的事情或翻译)。

你可以很容易地在一个最小的自包含的例子中向我们展示,或者继续使用CMake来为你预编译翻译单元,例如像cmake --build build test.cpp.i这样的东西。你会发现编译器看到的是什么,而不是预期的代码。

也可以通过

来演示这个效果
  • 将boost include移到顶部
  • 禁用预编译头文件

最新更新