>150
じゃなくて、ふつーに書くと返り値の型が異なるだけの関数は多重定義できん
という話でしょ。

template じゃなくても良いんだが

int foo();
void foo();

これは NG だが、

int foo(int);
void foo();

これなら行ける。

> intが無駄に使われているような気がして
とりあえず最適化有効にしてアセンブラ出力させてみ。