【发布时间】:2011-02-01 03:50:38
【问题描述】:
嗨 有没有办法在 Visual C++ 中使用匿名方法??
【问题讨论】:
标签: c++ visual-c++ anonymous-function
嗨 有没有办法在 Visual C++ 中使用匿名方法??
【问题讨论】:
标签: c++ visual-c++ anonymous-function
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 发布以来,对该规范草案进行了一些相对较小的更改。
【讨论】:
正如其他人所说,C++0x 将支持 lambda。同时,您可以使用Boost Lambda。
【讨论】:
如果您不能像其他人所建议的那样使用 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 方法可能是最灵活的,因为它定义了一个非常严格的函数接口,同时允许与:
【讨论】:
我假设您的意思是 C++/CLI,匿名方法是 C# 术语。不,不支持。它也不支持 C++0x lambdas。
【讨论】:
是的,C++0x 允许使用 lambda 函数。
【讨论】: