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