>>9
template <class F>
class widget;

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

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

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

return 0;
}