Clang Project

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