]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/meta/if.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: declares wxIf<> metaprogramming construct
4 // Author: Vaclav Slavik
7 // Copyright: (c) 2008 Vaclav Slavik
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_META_IF_H_
12 #define _WX_META_IF_H_
14 // NB: This code is intentionally written without partial templates
15 // specialization, because some older compilers (notably VC6) don't
21 template<bool Cond
> struct wxIfImpl
{};
23 // specialization for true:
27 template<typename TTrue
, typename TFalse
> struct Result
33 // specialization for false:
35 struct wxIfImpl
<false>
37 template<typename TTrue
, typename TFalse
> struct Result
43 } // namespace wxPrivate
45 // wxIf<> template defines nested type "value" which is the same as
46 // TTrue if the condition Cond (boolean compile-time constant) was met and
47 // TFalse if it wasn't.
49 // See wxVector<T> in vector.h for usage example
50 template<bool Cond
, typename TTrue
, typename TFalse
>
53 typedef typename
wxPrivate::wxIfImpl
<Cond
>
54 ::template Result
<TTrue
,TFalse
>::value
58 #endif // _WX_META_IF_H_