由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - lambda的一个疑问
相关主题
lambda到底有什么好?求教一个python lambda问题
请教C++ call-by-ref & call-by-val的问题python里的 lambda函数 有什么有点
C++11的lambda不会破坏可读性吗?c的函数指针能不能弄得像matlab的function handle一样?
C++14新特性FP有的,Python都有!
Java8的lambda很难用呀用STL map的时候怎么自己定义大小比较的关系
C++的并行架构库是如何实现内存回收?function pointer 和 call-back function 有什么区别?
c++ 如何重用一段代码,并把其中加法变成减法[合集] 大家看看我这个C++ STL Functor那里写错了
我对为什么使用FP的理解 (补)请教一个boost::bind的问题
相关话题的讨论汇总
话题: lambda话题: global话题: var话题: variables话题: variable
进入Programming版参与讨论
1 (共1页)
b*******s
发帖数: 5216
1
http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B
C++ section
给了两个例子
[]() { ++global_x; } // no parameters, just accessing a global variable
[] //no variables defined. Attempting to use any external variables in the
lambda is an error.
是不是矛盾的啊?
h***o
发帖数: 30
2
only automatic variables can be captured. Global variables can be used
without capturing it.

【在 b*******s 的大作中提到】
: http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B
: C++ section
: 给了两个例子
: []() { ++global_x; } // no parameters, just accessing a global variable
: [] //no variables defined. Attempting to use any external variables in the
: lambda is an error.
: 是不是矛盾的啊?

b*******s
发帖数: 5216
3
多谢多谢

【在 h***o 的大作中提到】
: only automatic variables can be captured. Global variables can be used
: without capturing it.

i**h
发帖数: 424
4
Scope of a global variable is, well, global.
C/C++ does not support nested function, so an auto variable can only be
accessed by the function where it's declared. By capturing, you allow
another function (lambda) to access an auto variable declared in the host
function. The reality is:
[&var]() { f(var); } can be translated into a functor like below:
class lambda
{
public:
lambda(type & var) : m_var(var) {}
void operator() {
f(m_var);
}
private:
type & m_var;
};
b*******s
发帖数: 5216
5
非常清楚,谢谢

【在 i**h 的大作中提到】
: Scope of a global variable is, well, global.
: C/C++ does not support nested function, so an auto variable can only be
: accessed by the function where it's declared. By capturing, you allow
: another function (lambda) to access an auto variable declared in the host
: function. The reality is:
: [&var]() { f(var); } can be translated into a functor like below:
: class lambda
: {
: public:
: lambda(type & var) : m_var(var) {}

b*******s
发帖数: 5216
6
非常清楚,谢谢

【在 i**h 的大作中提到】
: Scope of a global variable is, well, global.
: C/C++ does not support nested function, so an auto variable can only be
: accessed by the function where it's declared. By capturing, you allow
: another function (lambda) to access an auto variable declared in the host
: function. The reality is:
: [&var]() { f(var); } can be translated into a functor like below:
: class lambda
: {
: public:
: lambda(type & var) : m_var(var) {}

1 (共1页)
进入Programming版参与讨论
相关主题
请教一个boost::bind的问题Java8的lambda很难用呀
呼唤大侠们,我实在不能实现C++泛型的精神。C++的并行架构库是如何实现内存回收?
C++ 程序求助c++ 如何重用一段代码,并把其中加法变成减法
what is the difference?我对为什么使用FP的理解 (补)
lambda到底有什么好?求教一个python lambda问题
请教C++ call-by-ref & call-by-val的问题python里的 lambda函数 有什么有点
C++11的lambda不会破坏可读性吗?c的函数指针能不能弄得像matlab的function handle一样?
C++14新特性FP有的,Python都有!
相关话题的讨论汇总
话题: lambda话题: global话题: var话题: variables话题: variable