#ifndef EFSW_ATOMIC_BOOL_HPP #define EFSW_ATOMIC_BOOL_HPP #include #include namespace efsw { template class Atomic { public: explicit Atomic( T set = false ) : set_( set ) {} Atomic& operator=( T set ) { set_.store( set, std::memory_order_release ); return *this; } explicit operator T() const { return set_.load( std::memory_order_acquire ); } T load() const { return set_.load( std::memory_order_acquire ); } private: std::atomic set_; }; } // namespace efsw #endif