xref: /llvm-project/clang/test/SemaCXX/constexpr-late-instantiation.cpp (revision cfa30fa4852275eed0c59b81b5d8088d3e55f778)
1 // RUN: %clang_cc1 %s -fsyntax-only -verify
2 // RUN: %clang_cc1 %s -fexperimental-new-constant-interpreter -fsyntax-only -verify
3 
4 template <typename T>
5 constexpr T foo(T a);   // expected-note {{declared here}}
6 
main()7 int main() {
8   int k = foo<int>(5);  // Ok
9   constexpr int j =     // expected-error {{constexpr variable 'j' must be initialized by a constant expression}}
10           foo<int>(5);  // expected-note {{undefined function 'foo<int>' cannot be used in a constant expression}}
11 }
12 
13 template <typename T>
foo(T a)14 constexpr T foo(T a) {
15   return a;
16 }
17