有人可以帮助我的错误,我得到时,包括:
#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移到顶部
- 禁用预编译头文件