#include <iostream>

class c1{
public:
    void f(){std::cout<<"In f1\n";}
};
class c2{
public:
    void f(){std::cout<<"In f2\n";}
};

template <typename T>
class c {
    T t;
public:
    T* operator->() { return &t; }
};

int main()
{
    c<c1> cMain;
    cMain->f();
    return 0;
}