Nel libro di Scott Meyer Effective Modern C++ on page 167 (della versione di stampa), ha pronunciato la seguente esempio:Scopo dell'inoltro perfetto per l'argomento Callable nell'espressione di invocazione?
auto timeFuncInvocation = [](auto&& func, auto&&... params) {
// start timer;
std::forward<decltype(func)>(func)(
std::forward<decltype(params)>(params)...
);
// stop timer and record elapsed time;
};
Capisco completamente la perfetta inoltro di params
, ma non è chiaro per me quando l'inoltro perfetto di func
sarebbe mai pertinente. In altre parole, quali sono i vantaggi di cui sopra il seguente:
auto timeFuncInvocation = [](auto&& func, auto&&... params) {
// start timer;
func(
std::forward<decltype(params)>(params)...
);
// stop timer and record elapsed time;
};
Quando 'func' ha un operatore di chiamata della funzione qualificata ref-ref. –
Ohhhhhh .... ha perfettamente senso. –