3

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

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

生成以下警告

boost/function/function_base.hpp:321:警告:取消引用类型双关指针将破坏严格别名规则

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

4

2 回答 2

2

只是为了记录,我对使用 GCC 4.4.3 for Google 的 Native Client 的 boost::bind 有同样的警告。将 boost 从版本 1.41.0 升级到 1.47.0 后,警告消失了。

于 2011-09-19T18:20:40.447 回答
0

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

于 2010-06-15T04:43:08.450 回答