I am using Visual Studio 2008 SP1 with the Intel 11.0 compiler and
boost 1.38.
I am compiling with the pre-processor directive: BOOST_HAS_TR1 (though
I am not sure this does what I thought it did does since I see
boost::tuples is used below).
When I use the native tr1 function, I am unable to put a boost::lambda
into it (which worked fine with boost::function), I get an errors.
Any ideas?
Here is the sample code:
using boost::lambda::_1;
auto f = _1;
std::tr1::function f2(f);
std::cout << f2(2.0) << endl;
Here is the error.
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xxfunction
(73): error: no suitable conversion function from
1> "const
boost::lambda::lambda_functorboost::lambda::addressof_action,
boost::tuples::tuple>,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type>>>" to "const void *" exists
1> return (&_Callee._Get());
1> ^
1> detected during:
1> instantiation of "const void
*std::tr1::_Impl1<_Callable, _Rx, _Arg0, _Alloc>::_Get() const [with
_Callable=std::tr1::_Callable_obj>,
false>, _Rx=double, _Arg0=double, _Alloc=std::allocator<int>]" at line
46
1> instantiation of "std::tr1::_Impl1<_Callable, _Rx,
_Arg0, _Alloc>::_Impl1(_Callable::_MyTy &,
_Alloc::rebind>::other) [with
_Callable=std::tr1::_Callable_obj>,
false>, _Rx=double, _Arg0=double, _Alloc=std::allocator<int>]" at line
165
1> instantiation of "void std::tr1::_Function_impl1<_Ret,
_Arg0>::_Reset(_Fty, _Alloc) [with _Ret=double, _Arg0=double,
_Fty=boost::lambda::lambda_functor>,
_Alloc=std::allocator<int>]" at line 970 of "C:\Program Files
\Microsoft Visual Studio 9.0\VC\include\functional"
1> instantiation of "std::tr1::function<_Fty>::function
(_Fx) [with _Fty=double (double),
_Fx=boost::lambda::lambda_functor>]" at
line 41 of "C:\working\libraries\etk\test\meta\test_mathfunctions.cpp"