c – 在调用表达式中完美转发Callable参数的目的?

c – 在调用表达式中完美转发Callable参数的目的?,第1张

概述在Scott Meyer的书 Effective Modern C++ on page 167(印刷版)中,他举了以下例子: auto timeFuncInvocation = [](auto&& func, auto&&... params) { // start timer; std::forward<decltype(func)>(func)( std::forward<de 在Scott Meyer的书 Effective Modern C++ on page 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;};

我完全理解params的完美转发,但是当func的完美转发与之相关时,我还不清楚.换句话说,上述优点有以下几点:

auto timeFuncInvocation = [](auto&& func,auto&&... params) {  // start timer;  func(    std::forward<decltype(params)>(params)...  );  // stop timer and record elapsed time;};
解决方法 出于与参数相同的目的:所以当Func :: operator()是ref-qualifIEd时:

struct Functor{    voID operator ()() const &  { std::cout << "lvalue functor\n"; }    voID operator ()() const && { std::cout << "rvalue functor\n"; }};

Demo

总结

以上是内存溢出为你收集整理的c – 在调用表达式中完美转发Callable参数的目的?全部内容,希望文章能够帮你解决c – 在调用表达式中完美转发Callable参数的目的?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存