diff --git a/src/base/tristatebool.cpp b/src/base/tristatebool.cpp index 1de7efc7f..bdabb0948 100644 --- a/src/base/tristatebool.cpp +++ b/src/base/tristatebool.cpp @@ -31,28 +31,3 @@ const TriStateBool TriStateBool::Undefined(-1); const TriStateBool TriStateBool::False(0); const TriStateBool TriStateBool::True(1); - -TriStateBool::operator int() const -{ - return m_value; -} - -TriStateBool::TriStateBool(int value) -{ - if (value < 0) - m_value = -1; - else if (value > 0) - m_value = 1; - else - m_value = 0; -} - -bool TriStateBool::operator==(const TriStateBool &other) const -{ - return (m_value == other.m_value); -} - -bool TriStateBool::operator!=(const TriStateBool &other) const -{ - return !operator==(other); -} diff --git a/src/base/tristatebool.h b/src/base/tristatebool.h index 62821e30d..269a68c1a 100644 --- a/src/base/tristatebool.h +++ b/src/base/tristatebool.h @@ -36,15 +36,29 @@ public: static const TriStateBool False; static const TriStateBool True; - TriStateBool() = default; - TriStateBool(const TriStateBool &other) = default; + constexpr TriStateBool() = default; + constexpr TriStateBool(const TriStateBool &other) = default; + explicit constexpr TriStateBool(int value) + : m_value(value < 0 ? -1 : (value > 0 ? 1 : 0)) + { + } - explicit TriStateBool(int value); - explicit operator int() const; + explicit constexpr operator int() const + { + return m_value; + } - TriStateBool &operator=(const TriStateBool &other) = default; - bool operator==(const TriStateBool &other) const; - bool operator!=(const TriStateBool &other) const; + TriStateBool &operator=(const TriStateBool &other) = default; // add constexpr when using C++14 + + constexpr bool operator==(const TriStateBool &other) const + { + return (m_value == other.m_value); + } + + constexpr bool operator!=(const TriStateBool &other) const + { + return !operator==(other); + } private: signed char m_value = -1; // Undefined by default