]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/meta/if.h
Fix wxPropertyGrid::GetPropertyRect when the last item is collapsed.
[wxWidgets.git] / include / wx / meta / if.h
index 64532e6e5df61adc920963d5e7d352a20818aae0..f6f3672fc7ecae4fa395b6955931598952c45d9d 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     declares wxIf<> metaprogramming construct
 // Author:      Vaclav Slavik
 // Created:     2008-01-22
-// RCS-ID:      $Id$
 // Copyright:   (c) 2008 Vaclav Slavik
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -11,6 +10,8 @@
 #ifndef _WX_META_IF_H_
 #define _WX_META_IF_H_
 
+#include "wx/defs.h"
+
 // NB: This code is intentionally written without partial templates
 //     specialization, because some older compilers (notably VC6) don't
 //     support it.
 namespace wxPrivate
 {
 
-template<bool Cond> struct wxIfImpl {};
+template <bool Cond>
+struct wxIfImpl
+
+// broken VC6 needs not just an incomplete template class declaration but a
+// "skeleton" declaration of the specialized versions below as it apparently
+// tries to look up the types in the generic template definition at some moment
+// even though it ends up by using the correct specialization in the end -- but
+// 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 {};
+}
+#endif // VC++ <= 6
+;
 
 // specialization for true:
-template<>
+template <>
 struct wxIfImpl<true>
 {
     template<typename TTrue, typename TFalse> struct Result
@@ -42,7 +56,7 @@ struct wxIfImpl<false>
 
 } // namespace wxPrivate
 
-// wxIf<> template defines nested type "value" which is the same as 
+// wxIf<> template defines nested type "value" which is the same as
 // TTrue if the condition Cond (boolean compile-time constant) was met and
 // TFalse if it wasn't.
 //
@@ -51,7 +65,7 @@ template<bool Cond, typename TTrue, typename TFalse>
 struct wxIf
 {
     typedef typename wxPrivate::wxIfImpl<Cond>
-                         ::template Result<TTrue,TFalse>::value
+                     ::template Result<TTrue, TFalse>::value
             value;
 };