Здравствуйте, Alexander G, Вы писали:
Можно его и как useless трактовать:
#define useless unless
void foo(shared_ptr<file> f, ...)
{
useless (f)
throw runtime_error("input is useless");
...
}
А если серьёзно, то иногда приходится писать что-то типа:
if (!(lengthy_cond1
&& lengthy_cond2
&& lengthy_cond3
&& lengthy_cond4))
Но мне лично такая форма не очень нравится, не очень читаемо. Инвертировать все условия тоже не нравится, т.к. 'позитивные' условия обычно легче пишутся и читаются, чем 'негативные' (в смысле, что например "пришедший пакет корректный", а не "пришедший пакет не корректный").
А с unless имхо выглядит лучше:
unless (lengthy_cond1
&& lengthy_cond2
&& lengthy_cond3
&& lengthy_cond4)
Хотя, наверное, это всё же ещё не достаточная причина, что бы дефайнить и использовать такую фигню в реальном коде.