Boost logo

Boost Users :

From: Peter Waller (peter.waller_at_[hidden])
Date: 2007-10-11 10:55:33


Why does this not compile? Should it? It seems quite similar to code
found in the section `Naming delayed constants and variables' in the
manual at http://www.boost.org/doc/html/lambda/le_in_details.html

#include <lambda/lambda.hpp>
using namespace boost::lambda;

float i = 5, j = 0;
var_type<float>::type vi(var(i)), vj(var(j));
#line 172
(vi = vj);

The error I get:
/usr/include/boost/lambda/detail/lambda_functor_base.hpp: In member
function 'boost::lambda::identity<Float_t&>&
boost::lambda::identity<Float_t&>::operator=(const
boost::lambda::identity<Float_t&>&)':
/usr/include/boost/lambda/detail/lambda_functor_base.hpp:23: error:
non-static reference member 'Float_t&
boost::lambda::identity<Float_t&>::elem', can't use default assignment
operator
/usr/include/boost/lambda/detail/lambda_functors.hpp: In member
function 'boost::lambda::lambda_functor<boost::lambda::identity<Float_t&>
>& boost::lambda::lambda_functor<boost::lambda::identity<Float_t&>
>::operator=(const
boost::lambda::lambda_functor<boost::lambda::identity<Float_t&> >&)':
/usr/include/boost/lambda/detail/lambda_functors.hpp:113: note:
synthesized method 'boost::lambda::identity<Float_t&>&
boost::lambda::identity<Float_t&>::operator=(const
boost::lambda::identity<Float_t&>&)' first required here
zzNtuple.C: In function 'int main(int, char**)':
zzNtuple.C:173: note: synthesized method
'boost::lambda::lambda_functor<boost::lambda::identity<Float_t&> >&
boost::lambda::lambda_functor<boost::lambda::identity<Float_t&>
>::operator=(const
boost::lambda::lambda_functor<boost::lambda::identity<Float_t&> >&)'
first required here
make: *** [zzNtuple] Error 1

g++ (GCC) 4.1.2
boost 1.34.1

Thanks in advance,

- Peter


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