【发布时间】:2017-11-08 20:38:35
【问题描述】:
我试图编写一个函数(称为apply_args()),它接受一个特定的函数或函数对象以及调用该对象的参数,并使用完美转发来调用它。
例子:
auto fun = [](std::string a, std::string const& b) { return a += b; };
std::string s("world!");
// s is passing by lvalue ref,
// temporary object by rvalue ref
s = apply_args(fun, std::string("Hello, "), s);
如何实现该功能?
【问题讨论】:
-
你想写这个是因为你想从写它中学习,还是你想写它是因为你想拥有它?如果是第二个,你应该改用
std::invoke。 -
@DanielH -
std::invoke是一个不错的选择,但它是 C++17;这个问题被标记为 C++11 -
@DanielH 第一个
标签: c++ c++11 lambda perfect-forwarding