void func1(..) を void func2(..) から return できるか検証
戻り値が void 型である関数 func1 を,戻り値が void 型であるほかの関数 func2 において,
return func1(..);
のように返せるか実験してみた.
とりあえず,検証コードを書いてみる:
#include <iostream> using namespace std; void func1(void) { cout<<"hoge"<<endl; } void func2(void) { return func1(); } int main(int argc, char**argv) { func2(); return 0; }
コンパイルには g++-4.3 を使った.ただしオプションに -ansi と -pedantic をつけて,ANSI準拠にした:
g++ -ansi -pedantic return-void.cpp
結果:コンパイルは通った.
ほかのコンパイラでは試していないのだが,(g++判断で)ANSI準拠のようなので, void func1(..) を void func2(..) から return できるという結論にしておく*1.
何に使えるのか
マクロを使って関数を生成するときに, int func1(..) を int func2(..) から return できるのと同様のルールが void にも当てはまるなら,マクロの設計が簡単になる.稀なケースだが.
*1:規格を読んでみたが,どこに書いてあるか分かりません.orz..