]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/meta/if.h
allow handling events in a function taking the base class of the event class correspo...
[wxWidgets.git] / include / wx / meta / if.h
index 450ef24bf148da5a33915577d3d32b2480b33104..82e6d3b13587f63e10efa5e4333fa926abf1167e 100644 (file)
@@ -30,19 +30,7 @@ struct wxIfImpl
 // without this skeleton it doesn't recognize Result as a class at all below
 #if defined(__VISUALC__) && !wxCHECK_VISUALC_VERSION(7)
 {
-    template<typename TTrue, typename TFalse> struct Result
-    {
-        // unfortunately we also need to define value here because otherwise
-        // Result::value is not recognized as a class neither and it has to be
-        // complete too -- at least make it unusable because it really, really
-        // should never be used
-        class value
-        {
-        private:
-            value();
-            ~value();
-        };
-    };
+    template<typename TTrue, typename TFalse> struct Result {};
 }
 #endif // VC++ <= 6
 ;
@@ -53,7 +41,7 @@ struct wxIfImpl<true>
 {
     template<typename TTrue, typename TFalse> struct Result
     {
-        struct value : TTrue { };
+        typedef TTrue value;
     };
 };
 
@@ -63,7 +51,7 @@ struct wxIfImpl<false>
 {
     template<typename TTrue, typename TFalse> struct Result
     {
-        struct value : TFalse { };
+        typedef TFalse value;
     };
 };
 
@@ -77,9 +65,9 @@ struct wxIfImpl<false>
 template<bool Cond, typename TTrue, typename TFalse>
 struct wxIf
 {
-    // notice that value can't be a typedef, VC6 refuses to use it as a base
-    // class in this case
-    struct value : wxPrivate::wxIfImpl<Cond>::Result<TTrue, TFalse>::value { };
+    typedef typename wxPrivate::wxIfImpl<Cond>
+                     ::template Result<TTrue, TFalse>::value
+            value;
 };
 
 #endif // _WX_META_IF_H_