28 std::vector<Observer<T>*> observers;
30 mutable bool notifyInProgress;
36 : notifyInProgress(
false)
43 assert(!notifyInProgress);
44 auto copy = observers;
45 for (
auto& o : copy) {
46 o->subjectDeleted(*static_cast<const T*>(
this));
48 assert(observers.empty());
53 assert(!notifyInProgress);
54 observers.push_back(&observer);
59 assert(!notifyInProgress);
60 auto it = find(observers.begin(), observers.end(), &observer);
61 assert(it != observers.end());
68 assert(!notifyInProgress);
72 for (
auto& o : observers) {
73 o->update(*static_cast<const T*>(
this));