我有一个接收函数对象的模板化函数.有时函数对象是无状态结构,但有时它们是大型有状态对象.函数对象的状态在此函数中未更改,仅进行了检查.我也非常热衷于编写编译器可以尽可能优化的代码.选择参数类型时我应该考虑什么?
该功能属于以下类型:
template<typename funcT>
auto make_particle(funcT fun) {
Particle<typename funcT::result_type> particle;
particle = fun();
return particle;
}
Run Code Online (Sandbox Code Playgroud)
参数类型可能应该是funcT const & fun大型对象不被复制,但为什么大多数人使用按值调用的函数对象?我是否通过使用const引用来松散?或者我应该使用左值参考?请注意,c ++ 1y没问题,上面的代码示例只是一个例子.