Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-07-13 09:52:29

From: "Douglas Gregor" <gregod_at_[hidden]>
> On Tuesday 10 July 2001 09:38, you wrote:
> > I've updated bind.hpp. It now supports member function pointers and
> > accept()s visitors. :-)
> A few comments/questions:
> - BOOST_BIND: why? Is this a workaround for MSVC?

Yes. function.hpp indirectly includes type_traits/conversion_traits.hpp. It
contains a nested class template named 'bind'. This breaks the

boost::bind<R>(f, ...);

syntax under MSVC.

There are two workarounds:

1. Rename the nested 'bind' class template to something like 'bind_17' or
2. #define BOOST_BIND to something other than 'bind' and use that instead.

I prefer (1), but if the maintainers of the other libraries that use 'bind'
as a common name for a nested class template don't want to change their
implementations, (2) remains an option.

> - accept(): The code invokes the visitor with the bare a1, a2, etc. This
> means the the visitor may see ref_t<T> or value<T> arguments. Is this
> intended behavior?

Yes. See bind_test_4.cpp. This allows you to handle references differently.

> If so, ref_t<T> and value<T> must be specified as part of
> the visitor concept.

Only if your visitor intends to handle them. The 'accept' member is
primarily to support integration with other libraries, not for the end user.

Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at, gregod at, cpdaniel at, john at