Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaTemplate/instantiate-template-argument.cpp @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -std=c++2a -x c++ %s -verify template<auto T, decltype(T) U> concept C1 = sizeof(U) >= 4; // sizeof(U) >= 4 [U = U (decltype(T))] template<typename Y, char V> concept C2 = C1<Y{}, V>; // sizeof(U) >= 4 [U = V (decltype(Y{}))] template<char W> constexpr int foo() requires C2<int, W> { return 1; } // sizeof(U) >= 4 [U = W (decltype(int{}))] template<char X> // expected-note@+1{{candidate function}} constexpr int foo() requires C1<1, X> && true { return 2; } // sizeof(U) >= 4 [U = X (decltype(1))] static_assert(foo<'a'>() == 2); template<char Z> // expected-note@+1{{candidate function}} constexpr int foo() requires C2<long long, Z> && true { return 3; } // sizeof(U) >= 4 [U = Z (decltype(long long{}))] static_assert(foo<'a'>() == 3); // expected-error@-1{{call to 'foo' is ambiguous}}