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

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
template <class X> concept bool allocatable = requires{ { new X }->X * };
template <class X> concept bool semiregular = allocatable<X>;
template <class X> concept bool readable = requires{ requires semiregular<X> };
template <class X> int weak_input_iterator = requires (X x){ { x }->readable };
template <class X> concept bool input_iterator{ weak_input_iterator<X> };
template <class X>
concept bool forward_iterator = requires{ requires input_iterator<X> };
template <class X>
concept bool bidirectional_iterator = requires{ requires forward_iterator<X> };
template <class X>
concept bool random_access_iterator
    = requires{ requires bidirectional_iterator<X> };
void fn1 (random_access_iterator);
int
main ()
{
  int v;
  fn1 (v);
}

Reply via email to