2 // RUN: %clang_cc1 -std=c++20 -fmodules-cache-path=%t -x c++ %s -verify
3 // expected-no-diagnostics
4 #pragma clang module build std
5 module std
[system
] { module concepts
[system
] {} }
6 #pragma clang module contents
8 #pragma clang module begin std.concepts
11 template<class T
, class U
>
12 concept common_reference_with
= T::val
;
14 concept input_or_output_iterator
= true;
16 concept input_iterator
= input_or_output_iterator
<T
> &&
17 common_reference_with
<decltype(declval
<T
&>)&&, T
&>;
18 #pragma clang module end /*std.concepts*/
19 #pragma clang module endbuild /*std*/
21 #pragma clang module import std.concepts
22 template<input_or_output_iterator
>
23 struct iter_value_or_void
{};
24 // ensure that we don't assert on a subsumption check due to improper
26 template<input_iterator I
>
27 struct iter_value_or_void
<I
>{};