错误原因:
QT 的moc 元对象编译器不能够处理 BOOST_JOIN 这个宏。
解决方法:
在报错的位置,用 Q_MOC_RUN 进行隔离。Q_MOC_RUN是 moc 编译器在执行编译器启用的宏。例如:上述 has_binary_operator.hpp:51 第51行这个位置,将含有 BOOST_JOIN 的这一行隔离一下:
#ifndef Q_MOC_RUN
namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
#endif
然后对应括号结束的地方:
#ifndef Q_MOC_RUN
}
#endif