参考我之前的question,因为需要详细解释。 以下代码片段如何工作,基本和C ++ 03等效?
auto get_option_name = [](const std::pair<const std::string, std::string>& p) -> const std::string& {
return p.first;
};
答案 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;
的更多信息
答案 1 :(得分:3)
@ Garf365的答案是最好的。一个lambda和一个类似真正最相似的类 - 你可以像调用函数一样使用它们,并传递指针和对它们的引用。
但是,您可能还想了解如何在编译时使用功能模板来完成此项工作,尤其是在将它们作为参数传递给另一个模板时,就像使用boost库一样。 / p>
我很好奇,如果编译器使用函数模板生成的代码的复杂性有所改善,那就有了!
自己找:
感谢您提出问题并引导我进行调查!