2008-11-28
戻り値が 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 にも当てはまるなら,マクロの設計が簡単になる.稀なケースだが.