Let's say we have following interfaces
// interface
template <typename T>
class MyInterface
{
public:
virtual void fun1() = 0;
virtual void fun2() = 0;
}
// just specialization, keep pure virtual
class SpecInterface: public MyInterface<int>
{
}
Then in implementation
// interface_impl
template <typename T>
class MyServiceImpl : public MyInterface<T>
{
virtual void fun1() override {
std::cout << "concrete MyService f1" << std::endl;
}
// keep fun2 unimplemented
}
class SpecInterfaceImpl : public SpecInterface
{
// I want the MyServiceImpl::fun1 here
virtual void fun2() override {
std::cout << "concrete SpecService f2" << std::endl;
}
}
Now I want to implement the SpecInterface and also inherit from MyServiceImpl::fun1. How to do that?
In UML:

I tried multiple inheritance but without luck.
Do you perhaps mean something like this?