diff options
author | Benjamin Barenblat <bbaren@google.com> | 2019-06-17 10:04:05 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@google.com> | 2019-06-17 10:04:05 -0400 |
commit | ed71db1e8fc024a3c1b13268653f0a8812c56e34 (patch) | |
tree | 021ecff0d3f08162bf202d2c32860cb394bfb7a5 /src/base/optional.h | |
parent | 6eed60043b7b93407982d9fd3f1822aaf46afc17 (diff) |
C++11 restricts the bodies of constexpr functions more aggressively than
C++14 or later. Introduce and use a C++11-compatible macro for
assertions in constexpr functions.
Diffstat (limited to 'src/base/optional.h')
-rw-r--r-- | src/base/optional.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/base/optional.h b/src/base/optional.h index 5ede4af..79300d5 100644 --- a/src/base/optional.h +++ b/src/base/optional.h @@ -16,6 +16,7 @@ #define ASTC_CODEC_BASE_OPTIONAL_H_ #include "src/base/type_traits.h" +#include "src/base/utils.h" #include <cassert> #include <initializer_list> @@ -350,8 +351,7 @@ class Optional return get(); } constexpr const T& value() const { - assert(this->constructed()); - return get(); + return ASTC_CONSTEXPR_ASSERT(this->constructed()), get(); } T* ptr() { return this->constructed() ? &get() : nullptr; } @@ -372,8 +372,7 @@ class Optional return get(); } constexpr const T& operator*() const { - assert(this->constructed()); - return get(); + return ASTC_CONSTEXPR_ASSERT(this->constructed()), get(); } T* operator->() { @@ -381,8 +380,7 @@ class Optional return &get(); } constexpr const T* operator->() const { - assert(this->constructed()); - return &get(); + return ASTC_CONSTEXPR_ASSERT(this->constructed()), &get(); } ~Optional() { |