C ++ 03相当于C ++ 11 lambda

时间:2017-04-21 07:04:13

标签: c++11 lambda c++03

参考我之前的question,因为需要详细解释。 以下代码片段如何工作,基本和C ++ 03等效?

 auto get_option_name = [](const std::pair<const std::string, std::string>& p) -> const std::string& {
    return p.first;
 };

2 个答案:

答案 0 :(得分:3)

相当于:

class Extractor {
    // Definition of "function call" operator, to use instance
    // of this class like a function
    const std::string& operator()(const std::pair<const std::string, std::string>& p) {
        return p.first;
    }
};

Extractor get_option_name;

有关wikipediastackoverflow

的更多信息

答案 1 :(得分:3)

@ Garf365的答案是最好的。一个lambda和一个类似真正最相似的类 - 你可以像调用函数一样使用它们,并传递指针和对它们的引用。

但是,您可能还想了解如何在编译时使用功能模板来完成此项工作,尤其是在将它们作为参数传递给另一个模板时,就像使用boost库一样。 / p>

我很好奇,如果编译器使用函数模板生成的代码的复杂性有所改善,那就有了!

自己找:

感谢您提出问题并引导我进行调查!