Boost logo

Boost :

From: Howard Hinnant (hinnant_at_[hidden])
Date: 2005-12-11 14:52:32


On Dec 11, 2005, at 10:49 AM, Arkadiy Vertleyb wrote:

> Then is it possible to take a look inside, and see what is so
> specific about
> binder "extension" that causes the problem with this particular
> templates?

Peter hit the nail on the head (as usual).

> Unless the compiler has a bug, the only explanation is nonstandard
> default
> arguments.

template <class Operation, class T = typename
Metrowerks::remove_reference<Operation>::type::first_argument_type>
class binder1st ...

It is wrapped in:

#ifdef _MSL_EXTENDED_BINDERS

with the standard version in the #else. _MSL_EXTENDED_BINDERS is
defined by default in <mslconfig> which every CodeWarrior std C++
header includes.

The intent was to create a binder1st that could hold the operation by
reference if desired in order to avoid copies of expense-to-copy
predicates (such as those holding a container to compare to).
tr1::ref is probably a better solution to that problem, as is
tr1::bind. Consider this a failed experiment on my part.

-Howard


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk