Visual C ++ - 匿名方法

时间:2011-01-31 19:32:51

标签: c++ visual-c++ anonymous-function

您好 有没有办法在Visual C ++中使用匿名方法??

5 个答案:

答案 0 :(得分:13)

Visual C ++ 2010支持C ++ 0x lambda表达式,(1)可以用作匿名函数:

int i = ([](int x) { return 40 + x; })(2); // i = 42

(1)更确切地说,Visual C ++ 2010支持C ++ 0x lambda表达式的草案规范之一;自Visual C ++ 2010发布以来,该规范草案已经进行了一些相对较小的修改。

答案 1 :(得分:2)

正如其他人所说,C ++ 0x将支持lambda。在此期间,您可以使用Boost Lambda

答案 2 :(得分:2)

如果您不能像其他人所建议的那样使用C ++ 0x,那么您尝试做的事情有很多方法可以在某种程度上模仿,但不能完全捕捉到匿名方面:

template<typename T>
void foo(const T& _someFunctor, double _someArgument){
    _someFunctor(_someArgument);
}

或者你可以有一个更好的定义结构:

int bar(const boost::function<int(double,double)>& _aFunction, double arg1, double arg2){
    return _aFunction(arg1+2.0, arg2+2.0);
}

Boost::Function方法可能是最方便的,因为它定义了一个非常严格的函数接口,同时允许使用:

  1. Boost::Bind
  2. 功能
  3. 会员职能
  4. 仿函数(像对象一样的函数)

答案 3 :(得分:1)

我认为你的意思是C ++ / CLI,匿名方法是C#术语。不,不支持。它也不支持C ++ 0x lambdas。

答案 4 :(得分:0)

是的,C ++ 0x允许lambda函数。