// 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); }