From 4a10c2c11b272f435f61233eb9f585604476b2f8 Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Thu, 19 Aug 2021 14:22:41 +0200 Subject: [PATCH] Fix and test for missing count division (#329) --- include/boost/histogram/detail/atomic_number.hpp | 6 ++++++ test/accumulators_count_test.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/boost/histogram/detail/atomic_number.hpp b/include/boost/histogram/detail/atomic_number.hpp index b9c9819f..b661b106 100644 --- a/include/boost/histogram/detail/atomic_number.hpp +++ b/include/boost/histogram/detail/atomic_number.hpp @@ -48,6 +48,12 @@ struct atomic_number : std::atomic { return *this; } + // not thread-safe + atomic_number& operator/=(const T& x) noexcept { + this->store(this->load() / x); + return *this; + } + private: // for integral types template diff --git a/test/accumulators_count_test.cpp b/test/accumulators_count_test.cpp index d5875df4..a9e44f78 100644 --- a/test/accumulators_count_test.cpp +++ b/test/accumulators_count_test.cpp @@ -48,6 +48,16 @@ void run_tests() { c_t two(2); auto six = two * 3; BOOST_TEST_EQ(six, static_cast(6)); + six *= 2; + BOOST_TEST_EQ(six, static_cast(12)); + } + + { + c_t six(6); + auto two = six / 3; + BOOST_TEST_EQ(two, static_cast(2)); + two /= 2; + BOOST_TEST_EQ(two, static_cast(1)); } }