xref: /llvm-project/clang/test/SemaCXX/cxx1z-init-statement-template.cpp (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1 // RUN: %clang_cc1 -std=c++1z -verify -emit-llvm-only %s
2 // expected-no-diagnostics
3 
4 template <unsigned int BUFFER_SIZE> class Buffer {};
5 
6 class A {
7 public:
8   int status;
9 };
10 
11 template <unsigned int N> A parse(Buffer<N> buffer);
12 
13 template<unsigned int N>
init_in_if(Buffer<N> buffer)14 void init_in_if(Buffer<N> buffer) {
15   if (A a = parse(buffer); a.status > 0) {
16   }
17 }
18 
19 template<unsigned int N>
init_in_switch(Buffer<N> buffer)20 void init_in_switch(Buffer<N> buffer) {
21   switch (A a = parse(buffer); a.status) {
22     default:
23       break;
24   }
25 }
26 
test()27 void test() {
28   Buffer<10> buffer;
29   init_in_if(buffer);
30   init_in_switch(buffer);
31 }
32