boost :: bind нарушает правила строгого наложения имен? - PullRequest
2 голосов
/ 15 июня 2010

Используя Boost 1.43 и GCC 4.4.3, следующий код

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

Создает следующее предупреждение

увеличение / функция / function_base.hpp: 321: предупреждение: разыменование типа-наказывается указатель нарушит строгое-алиасинг правила

Какой правильный способ устранения этих предупреждений без установки -fno-strict-aliasing?

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Только для записи у меня было то же предупреждение для boost :: bind с использованием GCC 4.4.3 для собственного клиента Google.Предупреждение исчезло после обновления надстройки с версии 1.41.0 до 1.47.0.

0 голосов
/ 15 июня 2010

Вы уверены, что у вас есть правильный объект, соответствующий классу, в котором находится функция-член foo? Другими словами, в коде, который вы разместили, тип * это такой же, как SomeObject? Псевдоним возникает, когда компилятору приходится отслеживать несколько указателей разных типов на одних и тех же необработанных данных, поэтому я подозреваю, что типы * this и SomeObject не совпадают.

...