#include <iostream>

struct PureVirtual {
    virtual void Function() = 0;
};

struct FunctionImpl {
    virtual void Function() {
        std::cout << "FunctionImpl::Function()" << std::endl;
    }   
};

struct NonPureVirtual : public FunctionImpl, public PureVirtual {
    virtual void Function() override {
    	return FunctionImpl::Function();
    }
};

int main() {
    NonPureVirtual c;
    c.Function();
}