Re: другой Вопрос по стандартному unique_ptr
От: rg45 СССР  
Дата: 18.07.23 12:06
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>
S>v_map.try_emplace(true, std::in_place_type<some_type>); // Жалко, что так нельзя!
S>


Да, жалко, но, в принципе, решается через типы более высокого уровня, которые инкапсулируют внутри себя умные указатели:

class Outer
{
public:
  
    Outer(int i, double d, const std::string& s)
        : m_inner(std::make_unique<Inner>(i, d, s)) { }

private:
    struct Inner
    {
        int i{};
        double d{};
        std::string s{};
   };

   std::unique_ptr<Inner> m_inner;
};


void foo()
{
    std::map<int, Outer> m;
    
    m.emplace(
        std::piecewise_construct,
        std::forward_as_tuple(1),
        std::forward_as_tuple(42, 3.14, "Hello")
    );
}
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.