Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Plain Text by Eugene ( 12 years ago )
template <typename LST, typename X> struct FilterLT_X {
typedef typename LST::Head H;
typedef typename LST::Tail T;
typedef typename FilterLT_X<T, X>::Result filtered_tail;
typedef typename Neg<typename GT<H,X>::Result>::Result preserve_head;
typedef typename IsNIL<filtered_tail>::Result nil_filtered_tail;
typedef typename If<preserve_head,
List<H, filtered_tail>,
typename If<nil_filtered_tail,
NIL,
filtered_tail>::Result>::Result Result;
};
template <typename X> struct FilterLT_X<NIL, X> {
typedef NIL Result;
};
template <typename LST, typename X> struct FilterGT_X {
typedef typename LST::Head H;
typedef typename LST::Tail T;
typedef typename FilterGT_X<T, X>::Result filtered_tail;
typedef typename GT<H,X>::Result preserve_head;
typedef typename IsNIL<filtered_tail>::Result nil_filtered_tail;
typedef typename If<preserve_head,
List<H, filtered_tail>,
typename If<nil_filtered_tail,
NIL,
filtered_tail>::Result>::Result Result;
};
template <typename X> struct FilterGT_X<NIL, X> {
typedef NIL Result;
};
template <typename LST_1, typename LST_2> struct Concat {
typedef typename LST_1::Head H;
typedef typename LST_1::Tail temp;
typedef typename Concat<temp, LST_2>::Result T;
typedef List<H, T> Result;
};
template <typename LST_2> struct Concat<NIL, LST_2> {
typedef LST_2 Result;
};
template <typename LST_1> struct Concat<LST_1, NIL> {
typedef LST_1 Result;
};
template <> struct Concat<NIL, NIL> {
typedef NIL Result;
};
template <typename LST> struct QuickSort {
typedef typename LST::Head p;
typedef typename LST::Tail T;
typedef typename FilterLT_X<T, p>::Result lessers;
typedef typename FilterGT_X<T, p>::Result greaters;
typedef typename QuickSort<lessers>::Result sorted_lesser;
typedef typename QuickSort<greaters>::Result sorted_greater;
typedef typename Concat<sorted_lesser, typename Concat<List<p, NIL>, sorted_greater>::Result >::Result Result;
};
template<> struct QuickSort<NIL> {
typedef NIL Result;
};
Revise this Paste
Children: 70832