Убрать бессмысленное предупреждение компилятора - страница 2

 
TheXpert:
Предупреждение оставить, сторонникам отмены поотрубать руки, дабы неповадно было.

И ноги до самого подбородка.

 
Georgiy Merts:

Тут ни то что венгерская нотация, народу уже лень тип при объявлении писать, и современный с++ позволяет примерно так

auto fn() {   
   auto b = getValue();
    for(auto & c : b) {
        auto const & a = c.someCoeff();
        a.test1();
        a.test2();
        if(auto ret = algorithm(a, obj1, obj2)) {
            auto info = get();
            ...
        }
    }
    return var;
}

Я не говорю, что это эталон, но тенденция очевидна - без адекватных инструментов при кодинге (запросить тип и т.д) будет туго. А если они есть, то не вижу смысла в плясках с вшивкой типа в имя.

 
Предупреждение однозначно оставить. А не адекватные примеры из C++ в "индийском стиле" убрать )))
 

Вот тут также обсуждалось. https://www.mql5.com/ru/forum/149399/page26#comment_3751424

Предупреждение тут неграмотное по сути, так как речь идет о шаблоне функции, где можно использовать любые имена.

Сокрытие переменных по логике может происходить только при вызове функций, а не в их шаблонах.

MetaTrader 4 Client Terminal build 604
MetaTrader 4 Client Terminal build 604
  • 2014.02.12
  • www.mql5.com
MetaTrader 4 Client Terminal build 604 Terminal: улучшена маршрутизация торговых запросов при одновременной отсылке нескольких торговых запросов и...
 
TheXpert:
Предупреждение оставить, сторонникам отмены поотрубать руки, дабы неповадно было.
Поддерживаю.
 

По поводу венгерки. Сам её не использую, всё никак не могу заставить себя, однако считаю её очень полезной вещью, особенно в условиях MQL. Я бы даже сказал - именно в условиях MQL )   Потому как в C++ гораздо больше возможностей по управлению и контролю за типами.  Во-первых - typedef.  Во-вторых - decltype и auto.  В третьих - возможность создания полноценных типов данных, с заданными операторами приведения, и могущих передаваться по значению.  В MQL же всё очень урезано, поэтому венгерка по сути единственный надёжный вариант )

К слову, тут недавно была тема про путаницу между объектами и указателями при выполнении операторов в MQL.  А вот если все указатели помечать по-старинке префиксом "p", тогда эта проблема станет неактуальна )

 

Ну с опросом всё ясно.

Я тем временем прошвырнулся по руководству gcc, доступны следующие варианты режимов сообщений о скрытии:

-Wshadow=global  // аналог текущего

-Wshadow=local   // локальная переменная скрывает другую локальную 
                 // (случай из первого сообщения останется без ругательств)

-Wshadow=compatible-local // как предыдущий, но для ругательства тип переменных должен быть совместим 
                          // (т.е. возможен каст из одного в другой).

Думаю, самый адекватный - третий, допустим второй, но первый - чересчур.

Не ради спора, подвёл итог.

 
pavlick_:

свое мнение не забыли озвучить, а упомянуть, что по умолчанию там global, почему-то забыли

 

Ну ладно вам, не придирайтесь :) Да дефолтно -Wshadow == -Wshadow=global

Причина обращения: