blob: cc49ff4fb278637c50a89e94f3f7f5e92b6f10c1 [file] [log] [blame]
// { dg-do compile { target c++20 } }
// { dg-additional-options "-fconcepts-ts" }
// Basic tests for introduction syntax.
template<typename T>
concept True = true;
template<typename T>
concept False = false;
template<typename T, typename U>
concept Same = __is_same_as(T, U);
template<int N>
concept Pos = N >= 0;
True{T} void f1(T) { }
False{T} void f2(T) { }
Same{X, Y} void same();
Pos{N} void fn();
void driver()
{
f1(0);
f2(0); // { dg-error "" }
same<int, int>();
same<int, char>(); // { dg-error "" }
fn<0>(); // OK
fn<-1>(); // { dg-error "" }
fn<int>(); // { dg-error "no matching function" }
// { dg-error "type/value mismatch at argument 1" "" { target *-*-* } .-1 }
// { dg-message "expected a constant of type .int., got .int." "" { target *-*-* } .-2 }
}