// PR c++/86836 // { dg-do compile { target c++11 } } // { dg-options "" } struct A { int operator*(); void operator++(); bool operator!=(A); }; template class map { public: A begin(); A end(); }; template void mergemap(map orig, map toadd) { for (auto p : toadd) auto [orig] = orig; // { dg-error "use of 'orig' before deduction of 'auto'" } } // { dg-warning "structured bindings only available with" "" { target c++14_down } .-1 } int main() { map x, y; mergemap(x, y); }