Кстати, пока смотрел флаги GNU C++ в предыдущем сообщении, наткнулся на флаг -Weffc++. Он говорит компилятору сообщать о нарушениях правил Скота Мейерса(Scott Meyers) из книг Effective C++ и More Effective C++. Контролируются следующие правила из первой книги:
11. Для классов с динамическим выделением памяти объявляйте копирующий конструктор и оператор присваивания.
12. Предпочитайте инициализацию присваиванию в конструкторах.
14. Делайте деструкторы виртуальными в базовых классах.
15. "operator=" должен возвращать ссылку на *this.
23. Не пытайтесь вернуть ссылку, когда вы должны вернуть объект.
И следующие из второй:
6. Различайте префиксную и постфиксную формы операторов инкремента и декремента.
7. Никогда не перегружайте опреаторы "&&", "||", и ",".
Хочу такую фичу в Visual Studio.
Опция конечно хорошая...
ОтветитьУдалитьТолько многие библиотеки не следуют этим соглашениям. Особенно темплейтные (например boost).
И в существующем проекте включать - будет море ругани. :)
На этот счет там есть комментарий: " When selecting this option, be aware that the standard library headers do not obey all of these guidelines; use grep -v to filter out those warnings."
ОтветитьУдалить