template <typename Derived>
class Base{
public:
void interface (){
static_cast<Derived *>(this) ->implementation ();
}
};

class Der: public Base<Der>{ 
public:
void implementation (){}
};

int main(){

return 0;
}