Dav*_*man 10 c++ lambda perfect-forwarding auto c++14
在Scott Meyer的书" Effective Modern C++"(第167页)(印刷版)中,他给出了以下示例:
auto timeFuncInvocation = [](auto&& func, auto&&... params) {
// start timer;
std::forward<decltype(func)>(func)(
std::forward<decltype(params)>(params)...
);
// stop timer and record elapsed time;
};
Run Code Online (Sandbox Code Playgroud)
我完全理解完美的转发params
,但是当我完全转发func
相关时,我不清楚.换句话说,上述优点有以下几点:
auto timeFuncInvocation = [](auto&& func, auto&&... params) {
// start timer;
func(
std::forward<decltype(params)>(params)...
);
// stop timer and record elapsed time;
};
Run Code Online (Sandbox Code Playgroud)
Jar*_*d42 11
出于与参数相同的目的:所以何时Func::operator()
是ref-qualified:
struct Functor
{
void operator ()() const & { std::cout << "lvalue functor\n"; }
void operator ()() const && { std::cout << "rvalue functor\n"; }
};
Run Code Online (Sandbox Code Playgroud)