原則として、最初にコード例を示します。
void f1(int)
{}
#define f2(a) f1(a)
template<class F>
void f3(F f)
{
f(0);
}
int main()
{
f3(f2); // error C2065: 'f2' : undeclared identifier
return 0;
}
VC++ 2012 でコンパイル。
私の質問は:
マクロ展開がテンプレート展開に続くのはなぜですか? それは非常に直感に反し、間違いを起こしやすいと思います。