https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105742

            Bug ID: 105742
           Summary: accepts-invalid non-dependent call to non-static
                    member function from unrelated class in presence of
                    dependent base
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ppalka at gcc dot gnu.org
  Target Milestone: ---

struct X {
  void g();
};

struct Y { };

template<class T>
struct A : T {
  void f() {
    using type = decltype(X::g());
  }
};

template struct A<Y>;


The call to the non-static X::g should be rejected at instantiation time
because X isn't a base of A<Y>, but instead we resolve the decltype at template
definition time and accept the testcase because we (incorrectly?) deem the call
to be non type dependent (and non instantiation dependent).

Reply via email to