请问,关于lambda函数的实现有关问题
请教,关于lambda函数的实现问题
请教,关于lambda函数的实现问题
在C++11之前,boost库已经实现了lambda函数的语法,如下面这个例子:
我的问题是,boost库似乎重载了()操作符,以至于可以把代码写成:
(std::cout << _1 << " " << _3 << " " << _2 << "!\n")
("Hello","friend","my");
这里的实现机制到底是怎么样的? 我看源代码看不出这里的lambda是如何实现把std之前的左括号(和"!\n"之后的右括号变成lambda函数的声明?
这太神奇了,其中的原理是什么呢?
------解决方案--------------------
楼主stl源码剖析熟读了没有?听说过functor没有?
其实根本就和那对()无关
------解决方案--------------------
重载逗号运算符。。。
请教,关于lambda函数的实现问题
在C++11之前,boost库已经实现了lambda函数的语法,如下面这个例子:
- C/C++ code
#include <iostream> #include "boost/lambda/lambda.hpp" #include "boost/function.hpp" int main() { using namespace boost::lambda; (std::cout << _1 << " " << _3 << " " << _2 << "!\n") ("Hello","friend","my"); boost::function<void(int,int,int)> f= std::cout << _1 << "*" << _2 << "+" << _3 << "=" <<_1*_2+_3 << "\n"; f(1,2,3); f(3,2,1); }
我的问题是,boost库似乎重载了()操作符,以至于可以把代码写成:
(std::cout << _1 << " " << _3 << " " << _2 << "!\n")
("Hello","friend","my");
这里的实现机制到底是怎么样的? 我看源代码看不出这里的lambda是如何实现把std之前的左括号(和"!\n"之后的右括号变成lambda函数的声明?
这太神奇了,其中的原理是什么呢?
------解决方案--------------------
楼主stl源码剖析熟读了没有?听说过functor没有?
其实根本就和那对()无关
------解决方案--------------------
重载逗号运算符。。。