#include <iostream>
#include <iomanip>

using namespace std;

template <class T1, class T2 = void>
class A
{
public:

    void f()
    {
        t1 = t2.get();
    }

    T1 result() {cout << "2\n"; return t1;}
private:
    T1 t1;
    T2 t2;
};

template<class T1> 
class A<T1, void>
{
public:

    void f() {/*do nothing*/}
    T1 result() { cout << "1\n"; return t1;}

    T1 t1;
};

int main(int argc, char * argv[])
{
    A<int> a;
    A<int,int> b;
    a.result();
    b.result();
}
