Azurewarth 2015-09-24 17:18 采纳率: 0%
浏览 2331
已采纳

auto 与 decltype(auto)的疑问

最近在看modern effective c++,对下图第三段代码有疑问。
为什么返回auto而非decltype(auto)?template之前返回类型都为后者。
两者有何区别?
图片说明

  • 写回答

1条回答 默认 最新

  • fefe82 2015-09-24 17:44
    关注

    参见 http://stackoverflow.com/a/24109800/1058916

    下面是一些例子:

    int i;
    int&& f();
    auto x3a = i;                  // decltype(x3a) is int
    decltype(auto) x3d = i;        // decltype(x3d) is int
    auto x4a = (i);                // decltype(x4a) is int
    decltype(auto) x4d = (i);      // decltype(x4d) is int&
    auto x5a = f();                // decltype(x5a) is int
    decltype(auto) x5d = f();      // decltype(x5d) is int&&
    auto x6a = { 1, 2 };           // decltype(x6a) is std::initializer_list<int>
    decltype(auto) x6d = { 1, 2 }; // error, { 1, 2 } is not an expression
    auto *x7a = &i;                // decltype(x7a) is int*
    decltype(auto)*x7d = &i;       // error, declared type is not plain decltype(auto)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 python 用Dorc包报错,我的写法和网上教的是一样的但是它显示无效参数,是什么问题
  • ¥15 指定IP电脑的访问设置
  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部