开发者

boost::bind breaks strict-aliasing rules?

Using Boost 1.43 and GCC 4.4.3, the following code

boost::bind(&SomeObject::m开发者_Go百科emberFunc, this, _1));

Generates the following warning

boost/function/function_base.hpp:321: warning: dereferencing type-punned pointer will break strict-aliasing rules

What's the correct way to eliminate these warnings without setting -fno-strict-aliasing?


Just for the record I had the same warning for boost::bind using GCC 4.4.3 for Google's Native Client. The warning disappeared after upgrading boost from version 1.41.0 to 1.47.0.


Are you sure that you've got the right object matched with the class that the member function foo is in? In other words, in the code you posted, is the type of *this the same as SomeObject? Aliasing occurs when the compiler has to track multiple pointers of different types to the same raw data, which is why I suspect that the type of *this and SomeObject are not the same.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜