12 std::vector<gsl::not_null<ObserverType*>> mObservers;
14 LockType& getLock() {
return mLock; }
15 void removeObserver(ObserverType& observer) {
16 std::lock_guard<LockType> l{getLock()};
17 erase_if(mObservers, [&](
auto& v) {
return v.get() == std::addressof(observer); });
23 Subject(Subject
const&) =
delete;
24 Subject& operator=(Subject
const&) =
delete;