Как решить "пользовательский" оператор || () 'всегда оценивает оба аргумента "предупреждение, когда включен -Weffc ++? - PullRequest
0 голосов
/ 07 февраля 2019

Это перегружено ||Оператор, определенный в моем классе:

bool operator|| (const MyClass& v) const {
    return ......;  //some calculation
}

Компилятор выдает предупреждение:

предупреждение: пользовательский 'bool MyClass :: operator || (const MyClass &) const' всегдаоценивает оба аргумента [-Weffc ++]

Я понимаю предупреждение, потому что встроенный ||это короткое замыкание, которое может отличаться от того, что собирается вести пользовательский оператор.Но дело в том, что мне нужно включить -Weffc++, и любое предупреждение не допускается.Так какой код ||перегрузка может разрешить это предупреждение (т.е. подавить это предупреждение)?Спасибо.

Я использую g ++ 5.4.0 в Ubuntu 16.04.

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете избежать предупреждения, не перегружая логические операторы (чьи встроенные версии закорачиваются).Если вы должны следовать указаниям параметра -Weffc++, то вы не должны объявлять такие перегрузки.

Вы можете использовать:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
// the declaration
#pragma GCC diagnostic pop

Для временного подавленияпредупреждение независимо от параметров компиляции.

...