kir*_*gum 5 c++ function argument-passing pre-increment
我有相同的功能,唯一的区别是它会递增或递减.我想从中概括一下.
template<typename O>
void f(int& i, O op){
op(i);
}
int main() {
int i;
f(i,operator++);
f(i,operator--);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我的另一个选择是使用函数std :: plus或有两个函数,但如果可能的话我更喜欢这个解决方案.谢谢.
只需使用lambda:
template<typename O>
void f(int& i, O op){
op(i);
}
int main() {
int i;
f(i,[] (int& x) { ++x; });
f(i,[] (int& x) { --x; });
return 0;
}
Run Code Online (Sandbox Code Playgroud)
还不清楚你是想要后期还是预先增量.
如@TC所述,如果要保留普通运算符的语义,可以添加return语句.