1 // { dg-do run { target c++11 } }
2 
3 #define assert(E) if(!(E))__builtin_abort();
4 
5 int n = 0;
6 
7 template <class T>
8 class Foo {
9  public:
Foo()10   Foo() {
11    n--;
12   }
Foo(const Foo &)13   Foo(const Foo&) {
14    n--;
15   }
~Foo()16   ~Foo() {
17    n++;
18   }
19 };
20 
21 struct Data {};
22 
a()23 void a()
24 {
25 	Data b;
26 }
27 
main(int argc,char * argv[])28 int main(int argc, char *argv[]) {
29   auto fn = [] (const Foo<Data>& x) {
30     return (x);
31   };
32 
33   {
34     Foo<Data> a;
35     fn(a);
36   }
37 
38   assert(n == 0);
39 }
40