gcc/testsuite/g++.dg/concepts/diagnostic5.C: In function ‘void bar()’:         
gcc/testsuite/g++.dg/concepts/diagnostic5.C:42:13: error: use of function ‘void foo() [with T = char]’ with unsatisfied constraints
   42 |   foo<char>(); // { dg-error "use of" }                                                                                    
      |             ^                                                                                                              
gcc/testsuite/g++.dg/concepts/diagnostic5.C:37:8: note: declared here                                                              
   37 |   void foo() { }                                                                                                           
      |        ^~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:37:8: note: constraints not satisfied                                                  
gcc/testsuite/g++.dg/concepts/diagnostic5.C: In instantiation of ‘void foo() [with T = char]’:                                     
gcc/testsuite/g++.dg/concepts/diagnostic5.C:42:13:   required from here                                                            
gcc/testsuite/g++.dg/concepts/diagnostic5.C:37:8:   required by the constraints of ‘template<class T>  requires (c1<T>) || (c2<T>) || ((c3<T>) || (c4<T>)) || (c5<T>) void foo()gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:49: note: no operand of the disjunction is satisfied                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:13: note: the operand ‘c1<T>’ is unsatisfied because                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:5:11:   required for the satisfaction of ‘c1<char>gcc/testsuite/g++.dg/concepts/diagnostic5.C:5:16:   in requirements                                                                                                              
gcc/testsuite/g++.dg/concepts/diagnostic5.C:5:36: note: the required type ‘typename T::blah’ is invalid                                                                          
    5 |   concept c1 = requires { typename T::blah; };                                                                                                                           
      |                           ~~~~~~~~~^~~~~~~~                                                                                                                              
gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:22: note: the operand ‘c2<T>’ is unsatisfied because                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:10:11:   required for the satisfaction of ‘c2<char>gcc/testsuite/g++.dg/concepts/diagnostic5.C:10:16:   in requirements with ‘char xgcc/testsuite/g++.dg/concepts/diagnostic5.C:10:33: note: the required expression ‘* x’ is invalid                                                                                
   10 |   concept c2 = requires (T x) { *x; };                                                                                                                                   
      |                                 ^~                                                                                                                                       
gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:33: note: the operand ‘c3<T>’ is unsatisfied because                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:16:11:   required for the satisfaction of ‘c3<char>gcc/testsuite/g++.dg/concepts/diagnostic5.C:16:38: note: no operand of the disjunction is satisfied                                                                              
   16 |   concept c3 = __is_same(T, const T) || __is_same(T, int);                                                                                                               
      |                ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~                                                                                                                
gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:42: note: the operand ‘c4<T>’ is unsatisfied because                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:21:11:   required for the satisfaction of ‘c4<char>gcc/testsuite/g++.dg/concepts/diagnostic5.C:21:16:   in requirements with ‘char xgcc/testsuite/g++.dg/concepts/diagnostic5.C:21:54: note: nested requirement ‘(c2<const T> || c2<volatile T>)’ is not satisfied                                                   
   21 |   concept c4 = requires (T x) { requires c2<const T> || c2<volatile T>; };                                                                                               
      |                                          ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~                                                                                                   
gcc/testsuite/g++.dg/concepts/diagnostic5.C:31:52: note: the operand ‘c5<T>’ is unsatisfied because                                                                              
   31 |   requires (c1<T> || c2<T>) || (c3<T> || c4<T>) || c5<T> // { dg-message "49: no operand" }                                                                              
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~                                                                                                                 
gcc/testsuite/g++.dg/concepts/diagnostic5.C:26:11:   required for the satisfaction of ‘c5<char>gcc/testsuite/g++.dg/concepts/diagnostic5.C:26:16:   in requirements with ‘char xgcc/testsuite/g++.dg/concepts/diagnostic5.C:26:36: note: & x’ does not satisfy return-type-requirement                                                                          
   26 |   concept c5 = requires (T x) { { &x } -> c1; };                                                                                                                         
      |                                    ^                                                                                                                                     
cc1plus: note: set -fconcepts-diagnostics-depth= to at least 3 for more detail