template <class F>
class widget;

template <class R, class A>
class widget<R(A)>
{
};

int main(void)
{
widget<void(int)> w1;
widget<int(void)> w2; // err

return 0;
}

w1は大丈夫なのに、w2でコンパイルエラーがでる
原因がさっぱりわからない・・・