Lines Matching refs:template

38 template <typename T> struct Void { typedef void Type; };

43 template <bool Cond> struct BoolType {
55 template <bool C> struct SelectIfImpl { template <typename T1, typename T2> struct Apply { typedef T1 Type; }; };
56 template <> struct SelectIfImpl<false> { template <typename T1, typename T2> struct Apply { typedef T2 Type; }; };
57 template <bool C, typename T1, typename T2> struct SelectIfCond : SelectIfImpl<C>::template Apply<T1,T2> {};
58 template <typename C, typename T1, typename T2> struct SelectIf : SelectIfCond<C::Value, T1, T2> {};
60 template <bool Cond1, bool Cond2> struct AndExprCond : FalseType {};
61 template <> struct AndExprCond<true, true> : TrueType {};
62 template <bool Cond1, bool Cond2> struct OrExprCond : TrueType {};
63 template <> struct OrExprCond<false, false> : FalseType {};
65 template <typename C> struct BoolExpr : SelectIf<C,TrueType,FalseType>::Type {};
66 template <typename C> struct NotExpr : SelectIf<C,FalseType,TrueType>::Type {};
67 template <typename C1, typename C2> struct AndExpr : AndExprCond<C1::Value, C2::Value>::Type {};
68 template <typename C1, typename C2> struct OrExpr : OrExprCond<C1::Value, C2::Value>::Type {};
73 template <typename T> struct AddConst { typedef const T Type; };
74 template <bool Constify, typename T> struct MaybeAddConst : SelectIfCond<Constify, const T, T> {};
75 template <typename T> struct RemoveConst { typedef T Type; };
76 template <typename T> struct RemoveConst<const T> { typedef T Type; };
82 template <typename T, typename U> struct IsSame : FalseType {};
83 template <typename T> struct IsSame<T, T> : TrueType {};
85 template <typename T> struct IsConst : FalseType {};
86 template <typename T> struct IsConst<const T> : TrueType {};
88 template <typename CT, typename T>
93 template <typename T> struct IsPointer : FalseType {};
94 template <typename T> struct IsPointer<T*> : TrueType {};
101 template <typename B, typename D> struct IsBaseOf
106 template<typename B, typename D> struct IsBaseOfImpl {
113 template <typename T>
125 template <typename B, typename D> struct IsBaseOf
134 template <bool Condition, typename T = void> struct EnableIfCond { typedef T Type; };
135 template <typename T> struct EnableIfCond<false, T> { /* empty */ };
137 template <bool Condition, typename T = void> struct DisableIfCond { typedef T Type; };
138 template <typename T> struct DisableIfCond<true, T> { /* empty */ };
140 template <typename Condition, typename T = void>
143 template <typename Condition, typename T = void>
148 template <typename T> struct RemoveSfinaeTag;
149 template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type; };