From fd1fda91458c8a20bf92a6af2b26a82ac40013d6 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Sun, 3 Feb 2019 16:38:40 +1100 Subject: [PATCH] bitwise: use free equality operator for bitfields --- bitwise.hpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bitwise.hpp b/bitwise.hpp index 1c6ccfec..1a853ca6 100644 --- a/bitwise.hpp +++ b/bitwise.hpp @@ -156,16 +156,24 @@ namespace cruft { constexpr ValueT get (void) const { auto const MASK = ~(~0u << SizeV); - return (value >> OffsetV) & MASK; + ValueT shifted = value >> OffsetV; + ValueT masked = shifted & MASK; + return masked; } - operator auto() const { return get (); } + operator ValueT () const { return get (); } - decltype(auto) operator+ () const { return +get (); } + auto operator+ () const { return +get (); } ValueT value; }; + template + bool operator== (bitfield const &a, OperandT const &b) + { + return a.get () == b; + } + template std::ostream& operator<< (std::ostream &os, bitfield const &val)