型に関してはtemplateを使えばいいと思います。可変引数についてはstdarg.hを使えば実現可能でしょう。C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。C++を使えばそのような間違いを犯しにくくなる。やってしまったときには足全体が無くなる。屁理屈みたいなコードですが面白そうだったのでマクロとtemplateのみで実装してみました。良い子は真似しないように。ミクプラは自由にリンクできます。