// Build don't link: 
// GROUPS passed templates
template <class T>
class T_Base
{};

template <class T>
class T_Derived
: public T_Base<T>
{};


class Base
{
public:
  Base (float name);
};

class Derived
: public Base
{
private:
  T_Base<int>*	data_;	// Fix (1): Change date_ from T_Base<int>* to T_Derived<int>*
  
public:
  Derived (float name); 
};


Derived::
Derived (float name)
:  Base(name),
   data_(new T_Derived<int>()) 
{}
