#include <memory>
struct A
{
protected:
A() {}
friend struct B;
friend std::unique_ptr<A> std::make_unique<A>();
};
struct B
{
std::unique_ptr <A> a;
B() : a( std::make_unique<A>() ) {}
};
int main()
{
B b;
}
I2luY2x1ZGUgPG1lbW9yeT4KCnN0cnVjdCBBIAp7CnByb3RlY3RlZDoKICAgIEEoKSB7fQogICAgZnJpZW5kIHN0cnVjdCBCOwogICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxBPiBzdGQ6Om1ha2VfdW5pcXVlPEE+KCk7Cn07CgpzdHJ1Y3QgQiAKewogICAgc3RkOjp1bmlxdWVfcHRyIDxBPiBhOwogICAgQigpIDogYSggc3RkOjptYWtlX3VuaXF1ZTxBPigpICkge30KfTsKICAgIAppbnQgbWFpbigpCnsKICAgIEIgYjsKfSAgICA=