Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2007-10-18 12:40:46


Ben Pope:

> Hi,
>
> I just started testing Boost 1.34.1 and have found this piece of code
> produces a warning, which was not present in Boost 1.33.1:

...

> It seems to pick this specialisation:
> template< class M, class T > struct add_cref< M T::*, 1 >
> {
> typedef M const & type; //bind.hpp(1575)
> };
>
> When I would have thought this one more appropriate:
>
> template< class R, class T > struct add_cref< R (T::*) (), 1 >
> {
> typedef void type; // bind.hpp(1580)
> };
>
> Any ideas?

None. We've reported this to Microsoft and they have (after much
deliberation) classified it as a bug, but apparently a fix would be
non-trivial and I don't know whether they plan to ever issue one for the
MSVC 8 line.

The warning is harmless, as the wrong specialization is only used in a
return type in an overload that isn't chosen (the only purpose of this
specific specialization is to avoid the warning).


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