Idiom #209 Type with automatic deep deallocation
Declare a type t which contains a string s and an integer array n with variable size, and allocate a variable v of type t. Allocate v.s and v.n and set them to the values "Hello, world!" for s and [1,4,9,16,25], respectively. Deallocate v, automatically deallocating v.s and v.n (no memory leaks).
#include <string> using namespace std::string_literals; #include <vector> #include <memory> struct t { std::string s; std::vector<int> n; }; auto v = std::make_unique<t>( "Hello, world!"s, decltype(t::n){1, 4, 9, 16, 25} ); v.reset(); // Automatically: void fn(){ auto v = std::make_unique<t>( "Hello, world!"s, decltype(t::n){1, 4, 9, 16, 25} ); }