#include <iostream>

using namespace std;

template<typename T>
struct Base
{
  void print1() {cout << "Base::print1" << endl;};
  void print2() {cout << "Base::print2" << endl;};
};

template<>
void Base<int>::print2() {cout << "Base<int>::print2()" << endl;};

int main()
{
  Base<double> d;
  Base<int> i; 

  d.print1();
  d.print2();
  i.print1();
  i.print2();
}
