LINUX.ORG.RU

Хвалёные смарт-поинтеры.

 


0

5

Всем привет!

Сегодня в мире т.н. «modern C++» принято нахваливать смарт-поинтеры. Дескать, это такая крутая технология, которая решает множество проблем. Как это всегда получалось, решение одних проблем порождало решение других проблем. Какие проблемы порождают смарт-поинтеры? Рассмотрим код, который валиден и прекрасно собирается:

struct B {
  virtual B* clone() = 0;
};

struct D : B {
  virtual D* clone() = 0;
};

struct impl : D {
  D* clone() override
  {
    return new impl;
  }
};

int main()
{
  auto b = new impl;
  b->clone();
}

Но стоит только превратить указатели в std::unique_ptr, как всё перестаёт собираться. И вот это уже вызывает смех. Ведь если ув. эксперты, уполномоченные принимать решения в части изменения стандарта, ввели смарт-поинтеры в язык, громогласно заявив при этом, что хватит писать на «голых» указателях, т.к. в современном C++ уже всё на смарт-поинтерах, то почему же тогда с этими хвалёными стандартными смарт-поинтерами ломается ковариантность? :-) C++ как он есть.

А какие вы знаете проблемы со смарт-поинтерами в современном C++?

Ответ на: комментарий от azelipupenko

зачем так долго ждать ? вы можете уже реализовать свои правильные смарт поинтеры и оформить пропозл в комитет
а то языком чЕйсать все великие, а как по делу, так сразу в кусты

anonymous
()
Ответ на: комментарий от eao197

До недавнего времени в нише нативных языков без GC, с низким потреблением ресурсов и высоким быстродействием были только C, C++ и Ada. Ну, может быть еще FreePascal и какой-нибудь Modula-2.

Перечислил всю маргинальщину, а про фортран забыл

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.