
15 Oct
2008
15 Oct
'08
6:12 p.m.
AMDG Missing Rainbow wrote:
Here mpl::transform takes 2 sequences and a binary operation and it results in a sequence.
<snip>
Here mpl::transform takes 1 sequence and a unary operation and it results in a sequence. How does mpl::transform supports such different arguments?
mpl::transform is "overloaded" to handle either 1 or 2 sequences. The actual definition is something like: template<class Sequence1, class Sequence2OrUnaryOperation, class BinaryOperation = na> struct transform : transform2<Sequence1, Sequence2OrUnaryOperation, BinaryOperation> {}; template<class Sequence1, class UnaryOperation> struct transform<Sequence, UnaryOperation> : transform1<Sequence1, UnaryOperation> {}; In Christ, Steven Watanabe