xref: /llvm-project/clang/test/ASTMerge/var-cpp/Inputs/var1.cpp (revision 0333dd95636da52229ca14b4e5525c1cd8ba62d2)
1*0333dd95SReid Kleckner 
2*0333dd95SReid Kleckner template <typename T>
3*0333dd95SReid Kleckner constexpr T my_pi = T(3.1415926535897932385L);  // variable template
4*0333dd95SReid Kleckner 
5*0333dd95SReid Kleckner template <> constexpr char my_pi<char> = '3';   // variable template specialization
6*0333dd95SReid Kleckner 
7*0333dd95SReid Kleckner template <typename T>
8*0333dd95SReid Kleckner struct Wrapper {
9*0333dd95SReid Kleckner   template <typename U> static constexpr U my_const = U(1);
10*0333dd95SReid Kleckner    // Variable template partial specialization with member variable.
11*0333dd95SReid Kleckner   template <typename U> static constexpr U *my_const<const U *> = (U *)(0);
12*0333dd95SReid Kleckner };
13*0333dd95SReid Kleckner 
14*0333dd95SReid Kleckner constexpr char a[] = "hello";
15*0333dd95SReid Kleckner 
16*0333dd95SReid Kleckner template <> template <>
17*0333dd95SReid Kleckner constexpr const char *Wrapper<float>::my_const<const char *> = a;
18