class Bitfield : public BitfieldBase<Type>
         {
           public:
-            operator uint64_t () const
+            operator const uint64_t () const
             {
                 return this->getBits(first, last);
             }
         class BitfieldWO : public Bitfield<first, last>
         {
           private:
-            operator uint64_t () const;
+            operator const uint64_t () const;
 
           public:
             using Bitfield<first, last>::operator=;
         class SignedBitfield : public BitfieldBase<Type>
         {
           public:
-            operator int64_t () const
+            operator const int64_t () const
             {
                 return sext<first - last + 1>(this->getBits(first, last));
             }
         class SignedBitfieldWO : public SignedBitfield<first, last>
         {
           private:
-            operator int64_t () const;
+            operator const int64_t () const;
 
           public:
             int64_t operator=(const int64_t _data)
 
         BitUnionOperators() {}
 
-        operator Type () const
+        operator const Type () const
         {
             return Base::__data;
         }
 //do so.
 #define EndSubBitUnion(name) \
         }; \
-        inline operator const __DataType () \
+        inline operator const __DataType () const \
         { return __data; } \
         \
         inline const __DataType operator = (const __DataType & _data) \