gcc имеет -Winit-self, но, похоже, работает только для
Код: Выделить всё
int f()
{
int i = i;
return i;
}
Код: Выделить всё
class A {
int m;
public:
A(int) : m(m) { }
int f() {return m;}
};
Редактировать 2: На самом деле проблема снова актуальна. В упрощенном примере -O1 -Wuninitialized -Winit-self работает, однако он перехватывает его не в тот момент, когда вы объявляете m(m), а скорее, когда вы определяете A(4). Это также означает, что компилятор не улавливает это, если конструктор находится в своей собственной единице компиляции (что, как я полагаю, должно происходить довольно часто в реальных сценариях).
Подробнее здесь: https://stackoverflow.com/questions/843 ... themselves
Мобильная версия