cxx1z-init-statement-template.cpp
593 Bytes
// RUN: %clang_cc1 -std=c++1z -verify -emit-llvm-only %s
// expected-no-diagnostics
// rdar://problem/33888545
template <unsigned int BUFFER_SIZE> class Buffer {};
class A {
public:
int status;
};
template <unsigned int N> A parse(Buffer<N> buffer);
template<unsigned int N>
void init_in_if(Buffer<N> buffer) {
if (A a = parse(buffer); a.status > 0) {
}
}
template<unsigned int N>
void init_in_switch(Buffer<N> buffer) {
switch (A a = parse(buffer); a.status) {
default:
break;
}
}
void test() {
Buffer<10> buffer;
init_in_if(buffer);
init_in_switch(buffer);
}