相关疑难解决方法(0)

为什么lambdas可以通过编译器比普通函数更好地优化?

The C++ Standard Library (Second Edition)Nicolai Josuttis 在其着作中指出,编译器可以比普通函数更好地优化lambdas.

此外,C++编译器比普通函数更好地优化lambdas.(第213页)

这是为什么?

我认为在内联时不应该有任何差别.我能想到的唯一原因是编译器可能有一个更好的本地上下文与lambdas,这样可以做出更多假设并执行更多优化.

c++ optimization lambda compiler-optimization c++11

167
推荐指数
2
解决办法
2万
查看次数

您可以指定类成员作为模板参数吗?

我想知道是否可以使用模板来做到这一点:

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)

但如果可能的话我想使用模板。

c++ templates

4
推荐指数
1
解决办法
98
查看次数