AMDG On 09/12/2012 12:14 PM, Bill Buklis wrote:
How does one use a reference in a lambda expression? The documentation says that "var" does, but it clearly doesn't.
var does work. The argument to operator<< is passed by reference correctly. The error is that the return type is deduced as sample instead of sample&. Try wrapping the expression in bll::ret or look up how to specify the return type in the docs. I don't remember off the top of my head what you need to specialize.
For example this fails to compile because it can't access the copy constructor:
#include
namespace bll = boost::lambda; class sample { public: sample() { } sample& operator<<( int ) { return(*this); }
private: sample( const sample& ); };
void test() { typedef std::vector<int> V;
V v; sample s;
std::for_each(v.begin(), v.end(), bll::var(s) << bll::_1); };
In Christ, Steven Watanabe