请问,关于lambda函数的实现有关问题

请教,关于lambda函数的实现问题
请教,关于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没有?
其实根本就和那对()无关
------解决方案--------------------
重载逗号运算符。。。