Size: a a a

2021 May 04

D

Devel29A in codingteam
источник

t

ttldtor in codingteam
чо?
источник

D

Devel29A in codingteam
Ну, вот эти все костыли в STL, чтобы по пизде все не пошло :(
источник

t

ttldtor in codingteam
ага, из бустов притянули
источник

t

ttldtor in codingteam
источник

t

ttldtor in codingteam
«While any atomic_ref instances referencing an object exists, the object must be exclusively accessed through these atomic_ref instances. No subobject of an object referenced by an atomic_ref object may be concurrently referenced by any other atomic_ref object. »
источник

t

ttldtor in codingteam
это как игра "Сифа"
источник

t

ttldtor in codingteam
"пометил" объект с помощью atomic_ref и только через atomic_ref его и можно потом использовать
источник

💮

💮 in codingteam
Костыли чтобы всё пошло по пизде.
источник

D

Devel29A in codingteam
:D
источник

t

ttldtor in codingteam
то есть, нужен ещё владелец для atomic_ref, который будет следить, перестали ли им пользоваться или нет
источник

t

ttldtor in codingteam
к enable_shared_from_this  я даже почти привык ...
источник

D

Devel29A in codingteam
Оно выглядит так, что положили болт на то, чтобы это нормально сделать под капотом
источник

t

ttldtor in codingteam
struct Entity {
 virtual ~Entity() = default;
};


/**
* @brief Entity that could be stored in a std::shared_ptr
*/
struct ShareableEntity : Entity, std::enable_shared_from_this<ShareableEntity> {
 /**
  * @brief Helper method for std::shared_ptr's downcasting
  * @tparam Down child class to which \c this should be downcasted
  * @return \c this that is downcasted to std::shared_ptr<\c Down> or \c nullptr
  */
 template <typename Down>
 std::shared_ptr<Down> getSharedFromThisAs() {
   return std::dynamic_pointer_cast<Down>(shared_from_this());
 }

 template <typename Down>
 std::shared_ptr<Down> getSharedFromThisAs() const {
   return std::dynamic_pointer_cast<Down>(shared_from_this());
 }
};

using ShareableEntityPtr = std::shared_ptr<ShareableEntity>;
источник

t

ttldtor in codingteam
вот такое у меня дрчево теперь в коде
источник

D

Devel29A in codingteam
//_\\
источник

t

ttldtor in codingteam
а то ж ещё можно неправильно сдаункастить умный указатель
источник

t

ttldtor in codingteam
вощем, я в своих новых проектах откажусь, наверное, от динамического полиморфизьма в таком виде
источник

t

ttldtor in codingteam
лучше уж я буду страдать со статическим тупе эрашуре
источник

t

ttldtor in codingteam
ну или не страдать
источник