fix
This commit is contained in:
parent
ce0e1358fc
commit
a3991e7c76
@ -26,11 +26,14 @@ namespace repertory {
|
|||||||
template <typename data_t> class atomic final {
|
template <typename data_t> class atomic final {
|
||||||
public:
|
public:
|
||||||
atomic() : mtx_(std::make_shared<std::mutex>()) {}
|
atomic() : mtx_(std::make_shared<std::mutex>()) {}
|
||||||
atomic(const atomic &) = default;
|
|
||||||
|
atomic(const atomic &at_data)
|
||||||
|
: data_(static_cast<data_t>(at_data)),
|
||||||
|
mtx_(std::make_shared<std::mutex>()) {}
|
||||||
|
|
||||||
atomic(data_t data)
|
atomic(data_t data)
|
||||||
: data_(std::move(data)), mtx_(std::make_shared<std::mutex>()) {}
|
: data_(std::move(data)), mtx_(std::make_shared<std::mutex>()) {}
|
||||||
atomic(data_t data, std::unique_ptr<std::mutex> mtx)
|
|
||||||
: data_(std::move(data)), mtx_(std::move(mtx)) {}
|
|
||||||
atomic(atomic &&) = default;
|
atomic(atomic &&) = default;
|
||||||
|
|
||||||
~atomic() = default;
|
~atomic() = default;
|
||||||
@ -40,7 +43,15 @@ private:
|
|||||||
std::shared_ptr<std::mutex> mtx_;
|
std::shared_ptr<std::mutex> mtx_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
auto operator=(const atomic &) -> atomic & = default;
|
auto operator=(const atomic &at_data) -> atomic & {
|
||||||
|
if (&at_data == this) {
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex_lock lock(*mtx_);
|
||||||
|
static_cast<data_t>(at_data) == data_;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
auto operator=(atomic &&) -> atomic & = default;
|
auto operator=(atomic &&) -> atomic & = default;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user