Случайно обнаружил, что в Си/Си++ можно приводить к типу... void. То есть, к отсутствующему значению.
Вот так:
(void)любое выражение

И всё, значение типа void. Как можно это применять?

Это значение, конечно же, можно возвращать из функции. Какого типа должна быть функция? void, разумеется!

void f()
{
return (void)MessageBox(NULL,"I\'m part of void expression", "HELLO",0);
}


Так можно избегать лишних фигурных скобок, если надо сделать какое либо действие, возвращающее не void и завершить функцию. Например:
if(some&&condition)
return (void)(DoAction1(),DoAction2());


Сначала будут выполнены функции, необходимые для получения значения выражения через операцию "запятая", а потом преобразовано к типу void и возвращено.

Спустя два дня с удивлением увидел такую же штуку (преобразование к void) в исходниках MFC.

У меня только один вопрос -- если я включу оптимизацию компилятора, может ли случиться, что функции не вызовутся?