タイトルのいい言い方が思いつきませんでした…
#define X(c) c
#define Y(c) X(c)
#undef X
int main(int argc,char*argv[])
{
std::cout << Y(5) << std::endl;
return 0;
}
X() がこのスコープで宣言されていないため、これによりエラーが発生します。Y に X のコピーを格納させる方法はありますか (別名、Y を定義するときにマクロ置換を強制的に発生させる)、X の存在に依存しなくなりますか? おそらく、ブーストにはこれのためのプリプロセッサがいくつかあるか、簡単な方法があるかもしれません。アイデア?