Compactify C++函数调用语法

Mic*_*hoi 1 c++ using

我想减少引用函数所需的语法量,并且想知道是否有办法做类似的事情:

(不可编译)

using pushToLastUsed = mSomeLongStackFIFOObject.push_back;
// or
auto pushToLastUsed = mSomeLongStackFIFOObject.push_back;
Run Code Online (Sandbox Code Playgroud)

然后我可以这样:

pushToLastUsed(10);
Run Code Online (Sandbox Code Playgroud)

代替:

mSomeLongStackFIFOObject.push_back(10);
Run Code Online (Sandbox Code Playgroud)

当然我可以制作一个像:

#define pushToLastUsed mSomeLongStackFIFOObject.push_back

// some code using it here

#undef pushToLastUsed
Run Code Online (Sandbox Code Playgroud)

但我不想使用宏.

Fra*_*eux 6

一种解决方案可能是使用lambda表达式将函数调用捕获到可调用对象中:

#include <vector>

void foo(std::vector<int> & bar)
{
    auto pushToLastUsed = [&bar](int index) {
        bar.push_back(index);
    };

    pushToLastUsed(10);
}
Run Code Online (Sandbox Code Playgroud)

虽然在我看来,即使你bar用一个很长的标识符取代,也没有什么好处.