aboutsummaryrefslogtreecommitdiff
path: root/ring.h
diff options
context:
space:
mode:
Diffstat (limited to 'ring.h')
-rw-r--r--ring.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/ring.h b/ring.h
index 3658ec4..43c3fca 100644
--- a/ring.h
+++ b/ring.h
@@ -99,12 +99,19 @@ class ring {
#if __cplusplus >= 201703L
constexpr std::optional<T> take() {
if (!is_empty()) {
- const std::optional<T> kRet = std::move(vals[m_rc & kMASK]);
+ std::optional<T> ret = std::move(vals[m_rc & kMASK]);
pop();
- return kRet;
+ return ret;
}
return std::nullopt;
}
+#else
+ constexpr T take() {
+ assert(!is_empty());
+ T ret = std::move(vals[m_rc & kMASK]);
+ pop();
+ return ret;
+ }
#endif
// -- INTERNAL ---------------------------------------------------------------