使用Boost 1.43和GCC 4.4.3,以下代码
boost::bind(&SomeObject::memberFunc, this, _1));
生成以下警告
升压/功能/ function_base.hpp:321: 警告:解除引用类型惩罚 指针将破坏严格别名 规则
在没有设置-fno-strict-aliasing的情况下消除这些警告的正确方法是什么?
答案 0 :(得分:2)
仅仅为了记录,我对使用GCC 4.4.3对于Google的Native Client有了相同的boost :: bind警告。升级版本1.41.0升级到1.47.0后,警告消失。
答案 1 :(得分:0)
你确定你有正确的对象与成员函数foo所在的类相匹配吗?换句话说,在您发布的代码中,*的类型是否与SomeObject相同?当编译器必须跟踪不同类型的多个指针到相同的原始数据时发生别名,这就是为什么我怀疑* this和SomeObject的类型不一样。