【发布时间】:2017-03-28 02:09:11
【问题描述】:
在 C++ 中传递 回调函数 参数的最佳方式是什么?
我想简单地使用模板,像这样:
template <typename Function>
void DoSomething(Function callback)
这是使用的方式,例如在std::sort 中为比较函数对象。
使用 && 传递呢?例如:
template <typename Function>
void DoSomething(Function&& callback)
这两种方法的优缺点是什么,为什么 STL 使用前者,例如在std::sort?
【问题讨论】:
-
@VittorioRomeo:我相信这个问题根本不是重复的。
-
这在in one way 或another 之前已经被问过......实际上并没有“绝对优越”的方式来处理这个问题,这取决于可调用对象的性质。另请参阅具有类似意图的this question。
-
我的问题与in the other thread 提出的问题非常不同。当然,我不需要编辑任何东西,只是不同而已。例如另一个线程甚至没有提到通过
&&,我也很好奇STL的std::sort使用的模式(为什么STL不使用&&?) . -
好吧,STL 按值传递回调的一个可能原因是在 C++11 之前不存在转发引用。
标签: c++ templates callback parameter-passing