小编cow*_*lus的帖子

C++将lambda函数保存为成员变量而没有用于优化的函数指针

我想在C++中编写一个将lambda函数保存为成员变量的类.尽可能高效地做它会很棒.例如,我读了这个线程为什么编译器可以比普通函数更好地优化lambdas?因此我想避免使用函数指针.

到目前为止,我最好的解决方案如下:

template<typename F>
class LambdaClass {
  private:
    F lambdaFunc;
  public:
    LambdaClass(F &_lambdaFunc): lambdaFunc(_lambdaFunc) {}
};
Run Code Online (Sandbox Code Playgroud)

我会用这个类如下:

auto lambdaFunc = [](int _a) -> int { return _a; };
LambdaClass<decltype(lambdaFunc)> lambdaClassObject<decltype(lambdaFunc)>(lambdaFunc);
Run Code Online (Sandbox Code Playgroud)

在我看来,使用它看起来并不好玩.所以我首先感兴趣的是,如果编译器可以内联已保存成员lambda函数的调用,那么这个代码是否有效,以及如何编写这个代码更漂亮?

编辑:我正在使用C++ 11.

c++ optimization lambda inline

5
推荐指数
1
解决办法
220
查看次数

标签 统计

c++ ×1

inline ×1

lambda ×1

optimization ×1