
On Tue, 6 Dec 2005, gast128 wrote:
Dear all,
I am too tired to investigate it deeply, so does anyone know why this does not compile (on VS 2003):
typedef boost::function
BinOperand; typedef std::vector<BinOperand> BinOperandVector; BinOperandVector operands = boost::assign::list_of(std::plus<int>()) (std::minus<int>()) (std::multiplies<int>()) (std::divides<int>());
That's because the first time you call list_of, it's argument is of type std::plus<int>, and this binds the 'assignment object' to that type only. Thus all other calls to operator() expects arguments of the same type. The solution is to explicitly give the argument type to list_of as BinOperand like this: BinOperandVector operands = boost::assign::list_of<BinOperand>(std::plus<int>()) (std::minus<int>()) (std::multiplies<int>()) (std::divides<int>()); -- François Duranleau LIGUM, Université de Montréal "When there are others, I can perceive myself as an individual. If I am alone, then I will be the same as everything else. There will be no difference between myself and nothing!" - from _Neon Genesis Evangelion_