Re[25]: Исповедь C++ника
От: so5team https://stiffstream.com
Дата: 27.12.20 06:39
Оценка: +1
Здравствуйте, Тёмчик

Вы не ответили на вопрос о том, каким боком и зачем бы приплетен паттерн Visitor.

S>> кто контролирует ее время жизни. Отвечая на этот вопрос вы и придете к необходимости возвращать (умный) указатель на реализацию интерфейса.

Тё>unsubscribe() мешает благородному дону удалить instance?

У меня пока проблема в том, чтобы разобраться с предложенным вами вариантом. Т.е. понять, что это за вариант вообще.

Пока что вырисовывается приблизительно такая картина:
template<typename T>
class SubscriptionStorage {
public:
  struct Unsubscription {
    virtual ~Unsubscription() = default;

    virtual void unsubscribe() noexcept = 0;
  };

  [[nodiscard]]
  Unsubscription * subscribe(T && value);

  ...

private:
  struct Link {
    virtual ~Link() = default;
    Link * prev_;
    Link * next_;
  };

  struct OneSubscription : public Link, public Unsubscription {
    T payload_;
    ...
    void unsubscribe() override {
      ... // Вычеркивание из списка.
      delete this; // Уничтожение узла.
    }
  }

  Link sentinel_;
};

template<typename T>
Unsubscription * SubscriptionStorage::subscribe(T && value) {
  return new OneSubscription(std::move(value), ...);
}


S>>Но для этого в C++ немного понимать нужно.

Тё>Слушайте, меня конкретно уже разрывает на вашу узколобость в сочетании наскоками на моё знание C++. Вот такие представители профессии и создают негативный стереотип о C++- ках.

-- Этот ваш C++ говно и для разработки реал-тайма не применяется!
-- А ты хоть C++ знаешь?
-- Да!
-- Что такое виртуальный деструктор?
-- Какой ты токсичный! Из-за таких как вы и C++ сообщество считается токсичным!


Тё>Это не относится к действительно прокачанным программистам (как Зудин), которые в силу обстоятельств применяют C++ как инструмент.


Мне как-то фиолетово, насколько прокачанным вы считаете меня, но таки применяю C++ как инструмент. Т.к. в области интересных для меня задач до недавнего времени широко использовались только C и C++, где-то еще была Ada. Сейчас вот Rust подвезли. Но до настоящего мейнстрима Rust-у еще нужно добираться лет 5.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.