【发布时间】:2015-02-16 13:21:27
【问题描述】:
我有相同的功能,唯一的区别是它会增加或减少。我想从中概括一下。
template<typename O>
void f(int& i, O op){
op(i);
}
int main() {
int i;
f(i,operator++);
f(i,operator--);
return 0;
}
我怎样才能做到这一点?
我的另一个选择是使用功能性 std::plus 或具有两个功能,但如果可能的话,我更喜欢这个解决方案。谢谢。
【问题讨论】:
-
写你自己的函子。 (如果你只写
operator++就可以做到这一点,就不需要std::plus...) -
我认为你不能为原生类型做到这一点。
-
f(i,[](int & v) { ++v; }); -
@cdhowie 如果我们能做到
f(i, x => x++);,那该多好 -
@cdhowie
s/int/auto/,并且可能还想返回一些东西:)
标签: c++ function argument-passing pre-increment