C/C++のcppが貧弱すぎるという方が正しい物の見方だと思うぞ。
C++はtemplateやらinlineやらというマクロ構文のおかげでわりとましになったが、
もともとの育ちの悪さからくる使い勝手の悪さはついて回る。
cppとtemplateとかが連携していないから、デバッグ版のnew/deleteを作ろうと
すると行番号などを渡すのが難しかったりとかするし。

まあそこまでは望まないにしても、どうしてm4くらいにしなかったのかねえ。
条件分岐とか任意個の引数それぞれについて展開文を生成するくらいはやって欲しいと
時々思う。