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}
);
}