| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/meta/if.h
 
- // Purpose:     declares wxIf<> metaprogramming construct
 
- // Author:      Vaclav Slavik
 
- // Created:     2008-01-22
 
- // Copyright:   (c) 2008 Vaclav Slavik
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #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
 
- // 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 <>
 
- struct wxIfImpl<true>
 
- {
 
-     template<typename TTrue, typename TFalse> struct Result
 
-     {
 
-         typedef TTrue value;
 
-     };
 
- };
 
- // specialization for false:
 
- template<>
 
- struct wxIfImpl<false>
 
- {
 
-     template<typename TTrue, typename TFalse> struct Result
 
-     {
 
-         typedef TFalse value;
 
-     };
 
- };
 
- } // namespace wxPrivate
 
- // 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.
 
- //
 
- // See wxVector<T> in vector.h for usage example
 
- template<bool Cond, typename TTrue, typename TFalse>
 
- struct wxIf
 
- {
 
-     typedef typename wxPrivate::wxIfImpl<Cond>
 
-                      ::template Result<TTrue, TFalse>::value
 
-             value;
 
- };
 
- #endif // _WX_META_IF_H_
 
 
  |