#include <iostream>
#include <memory>
struct A;
struct B
{
B();
~B();
private:
std::unique_ptr<A> a;
};
struct A
{
private:
void release_resources()
{
std::cout << "Releasing resources...\n";
}
friend B::~B();
};
B::B()
: a(std::make_unique<A>())
{ }
B::~B()
{
a->release_resources();
}
int main() {
B b;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IEE7CgpzdHJ1Y3QgQgp7CglCKCk7Cgl+QigpOwoJCnByaXZhdGU6CglzdGQ6OnVuaXF1ZV9wdHI8QT4gYTsKfTsKCgpzdHJ1Y3QgQQp7CnByaXZhdGU6Cgl2b2lkIHJlbGVhc2VfcmVzb3VyY2VzKCkKCXsKCQlzdGQ6OmNvdXQgPDwgIlJlbGVhc2luZyByZXNvdXJjZXMuLi5cbiI7Cgl9CgkKCWZyaWVuZCBCOjp+QigpOwp9OwoKQjo6QigpCgk6IGEoc3RkOjptYWtlX3VuaXF1ZTxBPigpKQp7IH0KCkI6On5CKCkKewoJYS0+cmVsZWFzZV9yZXNvdXJjZXMoKTsKfQoKaW50IG1haW4oKSB7CglCIGI7Cn0=