首页 文章

boost :: bind打破严格别名规则?

提问于
浏览
2

使用Boost 1.43和GCC 4.4.3,代码如下

boost::bind(&SomeObject::memberFunc, this, _1));

生成以下警告

boost / function / function_base.hpp:321:警告:解除引用类型惩罚指针将破坏严格别名规则

在没有设置-fno-strict-aliasing的情况下消除这些警告的正确方法是什么?

2 回答

  • 0

    你确定你有正确的对象与成员函数foo所在的类相匹配吗?换句话说,在您发布的代码中,的类型是否与SomeObject相同?当编译器必须跟踪不同类型的多个指针到相同的原始数据时发生别名,这就是为什么我怀疑 this和SomeObject的类型不一样的原因 .

  • 2

    仅仅为了记录,我使用GCC 4.4.3为Google的Native Client提供了与boost :: bind相同的警告 . 升级版本1.41.0升级到1.47.0后,警告消失 .

相关问题