相关疑难解决方法(0)

C++可以编译内联函数指针吗?

假设我有一个functionProxy带有泛型参数的函数function并调用它operator():

template< typename Function > void functionProxy( Function function ) {
    function();
}
Run Code Online (Sandbox Code Playgroud)

传递给它的对象可能是:


int main( )
{
    functionProxy( Functor() );
    functionProxy( function );
    functionProxy( [](){ std::cout << "lambda!" << std::endl; } );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器将能够内联function中 …

c++ compiler-construction optimization inline function

27
推荐指数
1
解决办法
9959
查看次数

比函数引用更有效的方法?

我有一个使用函数引用的类:

double u( const double& x, const double& y )
{
  return x * y;
}

class equation
{
  equation( double (&in_u)(const double&, const double&) );
//...
protected:
  double (&u)(const double&, const double&);
}
Run Code Online (Sandbox Code Playgroud)

该功能将被称为像10周8典型的运行过程中的时间.

该类进入库,该函数u由库的用户定义.所以我不能在类中有函数定义.

我读过这个:

(std::function)...的缺点是在被调用时引入一些(非常小的)开销(所以在一个非常严重的性能问题上它可能是一个问题,但在大多数情况下它不应该)

有没有更有效的方法将函数传递u给类equation?这会被视为"一个非常严重的性能危机"吗?

编辑

似乎有点混乱.只是要清楚,该功能u 在可执行文件编译时已知,但不是在图书馆的.在运行时获取该功能是我将在库的更高版本中考虑的功能,但现在不是.

c++ performance reference class c++11

8
推荐指数
1
解决办法
252
查看次数