Return文
ただし、C99とC++98では、main関数に限り、そのmain関数の戻り値の型が int であれば return 0; があったと見なされる(X3010 9頁 5.1.2.2.3、X3014 35頁 3.6.1 5節参照)
戻り値の型が void である関数で式を指定することは、Cだと意味解析でできないとされているが、現在のC++では、結果がvoid型になる式であれば良いとされている(X3014 79頁 6.6.3 3節参照)。このためテンプレートでより汎用性を持たせることが可能になっている。
もし、テンプレート引数 T にint型を返す関数を与えてこの関数テンプレートfunc_callを実体化させると、概念的には次のようになる。
そして、戻り値の型が void の関数を与えると、やはり概念的には次のようになる。
ここで fn() の型は void になるが、func_call の戻り値の型も void であるため、もとの関数テンプレート func_call に戻り値の型が void の関数を与えてもコンパイル可能である。仮にこれが認められず、Cのように戻り値の型も void の関数内では、式を省略したreturn文しか許されないとすると、もとの func_call に対して次のような特殊化を用意しなければならない。
一部の古いC++コンパイラでは、void型の式をreturnに書けず、実際にこのような対策を取る必要があった。なお、この特殊化では、関数オブジェクトを対象にしていない。
BASIC、あるいはVisual Basicのバージョン6までにおいて、return文とは、gosubによって飛んだサブルーチンから、元のメインルーチンへと戻る命令である。gosub元の行番号、もしくは構文の位置を記憶しておき、returnと書かれた個所までプログラムの進行が辿り着くと、記憶していた次の命令もしくは行番号を読み、実行を続けていく。
BASICにおけるreturn文には、行番号を伴うものと伴わないものの2つがある。
構文1
return
例
10 a=1:gosub 100 20 a=2:gosub 100 30 a=3:gosub 100 40 a=4:gosub 100 50 end 100 'サブルーチン 110 print a 120 return
上のプログラムリストの場合、行番号100から120がサブルーチンになり、行番号10~40はそれぞれサブルーチンへと飛び、行番号120から再びメインルーチンへと帰還する流れをとる。
また、BASICによってはreturn文に行番号を添えることで、メインルーチンへの帰還を行わずにプログラムを走らせることが可能なものもある。
構文2