view gcc/testsuite/g++.dg/diagnostic/member-fn-1.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line source

// PR c++/89537
// { dg-do compile { target c++11 } }

template <typename> class A {};
template <typename, typename, typename, typename> class B;
class C {
  using mapped_type = int;

public:
  template <typename _Compare>
  C(B<mapped_type, _Compare, A<int>, A<int>> *p1, unsigned)
      : keys(p1->keys), // { dg-error "18: invalid use of non-static member function" }
        values(p1->values) {} // { dg-error "20: invalid use of non-static member function" }
  A<int> keys;
  A<int> values;
};
class D {
public:
  using key_compare = int;
  template <typename _Alloc> D(key_compare, _Alloc);
};
template <typename _Tp, typename, typename, typename = A<_Tp>> class B {
  using _Impl = D;
  _Impl _M_impl;

public:
  using key_compare = int;
  using iterator = C;
  template <typename _Alloc> B(key_compare p1, _Alloc p2) : _M_impl(p1, p2) {}
  template <typename _Alloc> B(_Alloc p1) : B(key_compare(), p1) {}
  iterator begin() { return {this, 0}; }
  void keys();
  void values();
};
void fn1() {
  B<int, int, A<int>> m(fn1);
  m.begin();
}