// RUN: %clang_cc1 -std=c++2a -x c++ -verify %s
// expected-note@-1{{similar constraint expressions not considered equivalent}}
bool // expected-note {{candidate function [with T = unsigned int]}}
// expected-note@-1{{similar constraint expression here}}
bool // expected-note {{candidate function [with T = unsigned int]}}
bool av = a<unsigned>; // expected-error {{call to 'a' is ambiguous}}
concept C1 = sizeof >= 4;
requires
constexpr bool
static_assert;
static_assert;
concept C2 = sizeof > 1 && sizeof <= 8;
bool
requires
requires
constexpr bool
static_assert;
constexpr int
requires C1<T> &&
requires C1<T> || C2<T>
constexpr int
static_assert;
static_assert;
static_assert;
concept BiggerThan = sizeof > sizeof;
concept BiggerThanInt = BiggerThan<T, int>;
requires
// expected-note@-1 {{candidate function [with T = long long, U = int]}}
requires
// expected-note@-1 {{candidate function [with T = long long, U = int]}}
static_assert;
// expected-error@-1 {{call to 'f' is ambiguous}} \
expected-error@-1 {{invalid application of 'sizeof' to an incomplete type 'void'}}
concept C3 = true;
concept C4 = true && C3<T>;
requires
requires
static_assert;
// Regression - used template parameter detection when only first out of
// multiple parameters are used
;
int ;
int ;
static_assert;