$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Ben Pope (benpope81_at_[hidden])
Date: 2007-10-18 05:16:45
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:
---
#include <boost/bind.hpp>
struct Foo {};
struct Bar
{
Foo GetFoo()
{
return Foo();
}
};
int main()
{
Bar bar;
boost::bind(&Bar::GetFoo, bar);
}
---
1>boost\boost.1.34.1\boost\boost\bind.hpp(1575) : warning C4180:
qualifier applied to function type has no meaning; ignored
1> boost\boost.1.34.1\boost\boost\bind.hpp(1609) : see
reference to class template instantiation 'boost::_bi::add_cref<Pm,I>'
being compiled
1> with
1> [
1> Pm=Foo (__thiscall Bar::* )(void),
1> I=1
1> ]
1> test1\test1.cpp(16) : see reference to class template
instantiation 'boost::_bi::dm_result<Pm,A1>' being compiled
1> with
1> [
1> Pm=Foo (__thiscall Bar::* )(void),
1> A1=Bar
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? Thanks,
Ben