Иногда локальная переменная используется для единственной цели - проверять ее в файле assert(), например, так:
int Result = Func();
assert( Result == 1 );
При компиляции кода в сборке Release, assert() s обычно отключены, поэтому этот код может вызывать предупреждение о том, что Result установлен, но никогда не читается.
Возможное обходное решение -
int Result = Func();
if ( Result == 1 )
{
assert( 0 );
}
Но это требует слишком большого набора текста, не так просто на глазах и заставляет условие всегда проверяться (да, компилятор может оптимизировать проверку, но все же).
Я ищу альтернативный способ выразить это утверждение() таким образом, чтобы это не вызывало предупреждение, но все же было простым в использовании и не меняло семантики assert().
(отключение предупреждения с помощью #pragma в этой области кода не является опцией, а снижение уровней предупреждений, чтобы заставить его уйти, не является вариантом...).