reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // 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); } |