1#ifndef LIBSBX_SIGNAL_OBSERVER_HPP_
2#define LIBSBX_SIGNAL_OBSERVER_HPP_
8#include <libsbx/signals/lockable.hpp>
10namespace sbx::signals {
14template<
typename Type>
15constexpr auto is_observer_v = std::is_base_of_v<observer_type, std::remove_pointer_t<std::remove_reference_t<Type>>>;
17template<lockable Lockable>
20 template <lockable,
typename ...>
25 using lockable_type = Lockable;
31 void disconnect_all() {
32 auto lock = std::unique_lock<lockable_type>{_mutex};
40 auto lock = std::unique_lock<lockable_type>{_mutex};
42 _connections.emplace_back(std::move(
connection));
46 std::vector<scoped_connection> _connections;
Definition: connection.hpp:58
Definition: observer.hpp:18
Definition: signal.hpp:16
Definition: observer.hpp:12