作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 boost 序列化,我开发了一个完整的模块来将类存储在持久性存储中,但是当我尝试将我的模块迁移到其他项目时,我遇到了一些我从未见过的错误,而且我没有找到任何相关的错误网上资料。
我得到的错误是:
In file included from support.../boost_1_44/boost/serialization/void_cast.hpp:29,
from support.../boost_1_44/boost/archive/detail/oserializer.hpp:57,
from support.../boost_1_44/boost/archive/detail/interface_oarchive.hpp:23,
from support.../boost_1_44/boost/archive/detail/common_oarchive.hpp:22,
from support.../boost_1_44/boost/archive/basic_binary_oarchive.hpp:34,
from support.../boost_1_44/boost/archive/binary_oarchive_impl.hpp:23,
from support.../boost_1_44/boost/archive/binary_oarchive.hpp:21,
from .../ps_proxy.h:54,
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:57:10: error: macro "X" requires 2 arguments, but only 1 given
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:58:18: error: macro "X" requires 2 arguments, but only 1 given
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:60:11: error: macro "X" requires 2 arguments, but only 1 given
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:57: error: declaration does not declare anything
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:58: error: declaration does not declare anything
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:60: error: declaration of '~boost::detail::is_virtual_base_of_impl<Base, Derived, mpl_::bool_<true> >::X' as non-function
support.../boost_1_44/boost/type_traits/is_virtual_base_of.hpp:60: error: expected ';' before 'throw'
我希望有人能给我一些提示,说明为什么会发生这种情况以及为什么它在一个模块上正常工作以及当我迁移它(应该是透明迁移)时它会抛出这些错误。
谢谢!
最佳答案
boost::is_virtual_base_of<>
用于实现 Boost.Serialization 的某处。boost::is_virtual_base_of<>
使用名为 X
的类型和 Y
作为实现细节。X
的宏定义,打破X
boost::is_virtual_base_of<>
的实现中使用的类型.很明显X
是一个糟糕的宏名称——如果它是你的,那么找到一个更好的名称,如果不是,那么给定义它的任何库的作者发电子邮件并提示(然后 #undef
它在包括任何 Boost 头文件之前)。
FWIW,这显然是一个足够普遍的问题,在 Boost 1.47 类型中命名为 boost_type_traits_internal_struct_X
和 boost_type_traits_internal_struct_Y
被用来代替 X
和 Y
,因此升级到更新版本的 Boost 是解决您的症状的另一种方法。
关于c++ - 迁移工作模块时 Boost "is_virtual_base_of"编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654928/
我一直在使用 boost 序列化,我开发了一个完整的模块来将类存储在持久性存储中,但是当我尝试将我的模块迁移到其他项目时,我遇到了一些我从未见过的错误,而且我没有找到任何相关的错误网上资料。 我得到的
我是一名优秀的程序员,十分优秀!