The C++ Standard Library (Second Edition)Nicolai Josuttis 在其着作中指出,编译器可以比普通函数更好地优化lambdas.
此外,C++编译器比普通函数更好地优化lambdas.(第213页)
这是为什么?
我认为在内联时不应该有任何差别.我能想到的唯一原因是编译器可能有一个更好的本地上下文与lambdas,这样可以做出更多假设并执行更多优化.
我想知道是否可以使用模板来做到这一点:
template <typename T, (something here)>
void DoSomething(T& class_object)
{
std::cout << class_object.(something here) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
换句话说,您能否以某种方式传递您想要访问模板的成员对象?我似乎在任何地方都找不到任何例子。我知道你可以用宏来做到这一点:
#define DO_SOMETHING(T, member)
void DoSomething(T& class_object)
{
std::cout << class_object.member << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但如果可能的话我想使用模板。