|
Boost : |
From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-11-26 09:18:44
----- Original Message -----
From: "Emily Winch" <emily_at_[hidden]>
>
> For there to be any prospect of writing code that is generic with respect
to
> predicates like this, you'd _have_ to detect all class relationships in
the
> same way, or at least write a bunch of adaptors to make that possible.
>
> I'm not convinced that this looks sensible though:
>
> whatever< smaller<T>, bigger<U> >::value
>
> rather than
>
> is_bigger< T, U >::value
Why not?
> And if we assume that any predicate over N types must be expressed in
terms
> of N names, we are forcing the writer of the aforementioned generic code
to
> take an extra N template parameters to represent the predicate, rather
than
> 1. That would make the code REALLY ugly, even if we only consider N=2.
> (since I can't think of an example with N > 2)
That's a good point.
> I thought of a practical use of a two-parameter type predicate passed as a
> template template parameter. If you sort a tuple by the size of the
objects
> so the biggest ones go first, you might make it smaller (less padding
> required). Clearly this would be neatly achieved by passing is_bigger as a
> predicate to a sorting algorithm.
Yes, believe it or not I used a compile-time insertion sort with a binary
predicate in my last job!
-Dave
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk