// PR c++/101698 // { dg-do compile { target c++11 } } class Base { public: template <class T> operator const T&() const = delete; virtual operator const int&() const { static int res; return res; } }; template <class T> class Derive : public Base { public: operator const T&() const override { using Y = int; //static_assert(__is_same_as(T,Y), ""); static int res; res = Base::operator const Y&(); // OK res = Base::operator const T&(); // { dg-bogus "deleted" } return res; } }; int main() { Derive<int> a; const int& b = a; (void)b; }