view gcc/testsuite/g++.dg/cpp2a/concepts-pmf1.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 2b5abeee2509
children
line wrap: on
line source

// Make sure that the requirement fails because a .* expression of function
// type can only be used in a call.

// { dg-do compile { target concepts } }

template<class D, class T>
constexpr decltype(auto) invoke(D (T::*pmd), T&& t)
  noexcept(noexcept(t.*pmd))
  requires requires { t.*pmd; }
 { return t.*pmd; }

char invoke(...);

struct A
{
  int f();
};

int main()
{
  static_assert(sizeof(invoke (&A::f, A())) == 1);
}