|
Boost Users : |
Subject: [Boost-users] [boost.function] conflict with tr1::function shipped with VC++10
From: Tan, Tom (Shanghai) (TTan_at_[hidden])
Date: 2009-08-27 22:54:39
Hi,
I found a problem in using boost.function with VC++ 10, the code below
reproduces the problem:
#include <boost/function.hpp>
#include <vector>
typedef std::vector<int> test_type;
template<class T>
struct S
{
void test_g()
{
typedef S<T> this_class;
boost::function<void (this_class*, test_type)>
s(&this_class::g);
}
void g(test_type){}
};
int main()
{
S<int> s;
s.test_g();
}
This code is OK with VC++ 2008, but with VC++ 2010, it yields the
following message.
Is there anything that I can do to solve the ambiguity? Thanks.
C:\Boost\include\boost-1_39_0\boost/function/function_template.hpp(538)
: error
C2668: 'boost::mem_fn' : ambiguous call to overloaded function
C:\Boost\include\boost-1_39_0\boost/bind/mem_fn_cc.hpp(25):
could be 'bo
ost::_mfi::mf1<R,T,A1> boost::mem_fn<void,S<int>,test_type>(R
(__thiscall S<int>
::* )(A1))'
with
[
R=void,
T=S<int>,
A1=test_type
]
C:\Program Files\Microsoft Visual Studio
10.0\VC\INCLUDE\xxmem_fn(32): o
r 'std::tr1::_Mem_fn2<_Rx,_Pmf,_Arg0,_Arg1>
std::tr1::mem_fn<void,S<T>,tes
t_type>(_Rx (__thiscall S<T>::* )(_Arg1))' [found using
argument-dependent looku
p]
with
[
_Rx=void,
_Pmf=void (__thiscall S<int>::* )(test_type),
_Arg0=S<int>,
_Arg1=test_type,
T=int
]
while trying to match the argument list '(void (__thiscall
S<T>::* )(tes
t_type))'
with
[
T=int
]
.....
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net