base: Hide the BitUnion::__StorageType type.

Since this type is now accessible through a clean interface, hide it
from anybody that tries to peak around the curtain.

Change-Id: I1257b6675a45b8648be459ad8e8d0f27a6feee6b
Reviewed-on: https://gem5-review.googlesource.com/7205
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
diff --git a/src/base/bitunion.hh b/src/base/bitunion.hh
index 10fa005..6e7d223 100644
--- a/src/base/bitunion.hh
+++ b/src/base/bitunion.hh
@@ -291,8 +291,14 @@
     class BitfieldUnderlyingClasses##name : \
         public BitfieldBackend::BitfieldTypes<type> \
     { \
-      public: \
+      protected: \
         typedef type __StorageType; \
+        friend BitfieldBackend::BitUnionBaseType< \
+            BitfieldBackend::BitUnionOperators< \
+                BitfieldUnderlyingClasses##name> >; \
+        friend BitfieldBackend::BitUnionBaseType< \
+                BitfieldUnderlyingClasses##name>; \
+      public: \
         union { \
             type __storage;
 
@@ -388,6 +394,8 @@
 template <typename T>
 using BitUnionBaseType = typename BitfieldBackend::BitUnionBaseType<T>::Type;
 
+
+//An STL style hash structure for hashing BitUnions based on their base type.
 namespace std
 {
     template <typename T>