Explicit constructor calls are supported by clang (this->ClassName::ClassName()) with -fms-extensions thanks!
template<int k>
class Base {
public:
    int num = 0;
    Base(int sdsd):num(sdsd) {}
    void func(int v) {num = 12 + v;}
};
template <int Ty>
void callA(Base<Ty> *obj){
    (reinterpret_cast< Base<Ty>*>(obj))->Base::Base(1); // error: cannot refer to type member 'Base' in 'Base<99>' with '->'
                                                        // but with MS compiler in windows that's right
    (reinterpret_cast< Base<Ty>*>(obj))->Base::func(1); // ok
}
void callB(void *obj){
    (reinterpret_cast< Base<100>*>(obj))->Base::Base(2);// ok
    (reinterpret_cast< Base<100>*>(obj))->Base::func(1); // ok
}
int main(int argn, char** argc) {
    Base<99> a(0);
    callA(&a);
    callB(&a);
}
