// Forward declaration.
template<typename T = void>
struct C;

// Definition of specialized template base class.
template<>
struct C<>
{
};

// Definition of general template.
template<typename T>
struct C : C<>
{
};

// Definition of specialized template.
template<>
struct C<int> : C<>
{
};