34 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -x c++ %s -verify -fsyntax-only2// expected-no-diagnostics3 4template <typename T0>5concept HasMemberBegin = requires(T0 t) { t.begin(); };6 7struct GetBegin {8 template <HasMemberBegin T1>9 void operator()(T1);10};11 12GetBegin begin;13 14template <typename T2>15concept Concept = requires(T2 t) { begin(t); };16 17struct Subrange;18 19template <typename T3>20struct View {21 Subrange &getSubrange();22 23 operator bool()24 requires true;25 26 operator bool()27 requires requires { begin(getSubrange()); };28 29 void begin();30};31 32struct Subrange : View<void> {};33static_assert(Concept<Subrange>);34