HI Roman!Thanks for your nice response!I have just discovered another way.Please give me your comments!constant_type< const char[7] >::type _name(constant("value: "));playing the same role ofboost::function<const char*()> _name = boost::lambda::constant("value: ");
I find both 2 nice ways of expressing constant string in a lamda expression.
Using the boost::function approach, some sample code can be written like the following using round brackets next to _name variable.
std::for_each( myList.begin(),myList.end(),( std::cout << _name() << _1 , _1 = 2 ));
I find the approach using boost::function very nice since it provides more the "genericity" feeling; you don't have to declare the size of the string but it is enough const char*().With the constant_type way it is possible to use _name as a common const variable without using round bracketsstd::for_each( myList.begin(),myList.end(),( std::cout << _name << _1 , _1 = 2 ));
This works fine provided that the size is correct; it is probably not always nice, but compiler will complain if the size is not correct i.e. if you use const char[6] or if you use const char[8].Now I am wondering which is the fastest approach. I guess that probably they are
the same.