std::make_unique<std::reference_wrapper<Foo>>
возвращает интеллектуальный указатель на ссылку на Foo
.
Ссылка на Foo
размещается в куче.
Фактически Foo
не создано.
По той же причине это не скомпилируется:
auto x = std::make_unique<std::reference_wrapper<Foo>>();
Результат:
error: 'std::reference_wrapper<Foo>': no appropriate default constructor available
Единственный способ заставить его работать, это заставить его обратиться к некоторому ранее существовавшему Foo
:
Foo foo;
auto x = std::make_unique<std::reference_wrapper<Foo>>(foo);
Не могу придумать правильный вариант использования для этого.