Azurewarth 2015-09-25 01:18 采纳率: 0%
浏览 2331
已采纳

auto 与 decltype(auto)的疑问

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

  • 写回答

1条回答 默认 最新

  • fefe82 2015-09-25 01: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 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题