// DR1760: "no additional copy and destruction is performed" | |
// { dg-do run { target c++14 } } | |
#include <cassert> | |
int copy_count = 0; | |
int dtor_count = 0; | |
struct X | |
{ | |
X() = default; | |
X(const X&) { ++copy_count; } | |
~X() { ++dtor_count; } | |
}; | |
int main() | |
{ | |
{ | |
X x; | |
auto z = [y = x](){}; | |
X x2; | |
auto z2 = [x2](){}; | |
assert(copy_count == 2); | |
} | |
assert(dtor_count == 4); | |
} |