1 // PR c++/67084 2 // { dg-do compile { target c++17 } } 3 // { dg-additional-options "-fconcepts" } 4 5 template <class T> 6 concept True = true; 7 template <class T> 8 concept False = false; 9 10 template <class T> 11 constexpr bool p = false; 12 13 template <class T> 14 constexpr bool p<T*> = false; 15 16 template <class T> 17 requires True<T> 18 constexpr bool p<T*> = false; 19 20 template <class T> 21 requires True<T> && (T() == 0) 22 constexpr bool p<T*> = true; 23 24 template <class T> 25 constexpr bool q = false; 26 27 template <class T> 28 constexpr bool q<T*> = true; 29 30 template <class T> 31 requires False<T> 32 constexpr bool q<T*> = false; 33 34 template <class T> 35 requires False<T> && (T() != 0) 36 constexpr bool q<T*> = false; 37 38 static_assert (p<int*>,""); 39