Source of Nothingness - 2008-09-25 :

* 2008-09-25 :

cgi?routine=one&name=2008-09-25-0306
void f(void){
return (void)1;
}

C++としては合法というのが個人的な見解。
まず、戻り値が void の関数の戻り値として別の戻り値が void の関数を置くことが合法。
# wikipedia.org/wiki/Return%E6%96%87#C.2FC.2B.2B
つまり、以下の関数 f はOK。
void g() {}
void f() { return g(); }

もうひとつ、C++でキャストは変換演算子とみなすことが可能。
演算子ということは関数で、void へのキャストは戻り値が void の関数ということになる。
ということは上の状況と等しい、ということで合法。

Cとして合法かどうかはよく分からない。

update : 2008-09-25 (Thu) 20:18:37