3 // RUN: split-file %s %t
5 // RUN: %clang_cc1 -std=c++23 -emit-module-interface %t/a.cppm -o %t/a.pcm
6 // RUN: %clang_cc1 -std=c++23 %t/b.cpp -fmodule-file=a=%t/a.pcm -fsyntax-only -verify
11 template<class _Tp, class _Up>
12 concept __comparable = requires (_Tp &&__t, _Up &&__u) {
19 concept __member_end =
21 { __t.end() } -> __comparable<TypeA>;
26 requires __member_end<_Tp>
27 constexpr auto operator()(_Tp&& __t) const
32 void operator()(auto&&) const = delete;
36 inline namespace __cpo {
37 inline constexpr auto end = __end::__fn{};
42 concept range = requires(_Tp& __t) {
50 TypeA end() { return {}; }
59 template <range _Range>
60 a_view(_Range) -> a_view<int>;
62 constexpr bool operator==(TypeA, TypeA) {
71 export using ::a_view;
74 // expected-no-diagnostics