template<typename TYPE = int> class Foo {};
Foo<int> one; Foo<> two;
Foo three;
typedef Foo<> Foo;
template< template< class > class > struct A {...}; A< Foo > a; // error
#define Foo Foo<>