zoukankan      html  css  js  c++  java
  • C++ 11 新特性:函数声明auto

    1.概览

    • 1.1 函数名中的箭头,用来表明函数的return type,其使用在函数的返回类型需要通过模板参数进行推导,使用在decltype()和declval()不方便的场景

    2.正文

    c++ 中提供了如下的方式,定义一个函数以及返回值

    Go
    return-type identifier ( argument-declarations... )
    如: int fn(....){...}
    

    以及

    CSS
    auto identifier ( argument-declarations... ) -> return_type
    如: auto identifier(...) -> int {...}
    

    原因是: 当使用decltype进行返回类型推导的时候,是无法获取到模板参数的,需要使用declval进行辅助推导

    C++
    //这种方法无法做到
    template <typename T1, typename T2>
    decltype(a + b) compose(T1 a, T2 b);
    
    //需要使用declval
    template <typename T1, typename T2>
    decltype(std::declval<T1>() + std::declval<T2>()) compose(T1 a, T2 b);
    

    由于使用declval()这种方法太过于繁琐,所以搞出了这东西

    CSS
    template <typename T1, typename T2>
    auto compose(T1 a, T2 b) -> decltype(a + b);
    

    3.ref

    3.1arrow-operator-in-function-heading

  • 相关阅读:
    第三次上机练习
    第三次作业
    第二次上级练习
    第二次作业
    第一次上机练习
    第一次作业
    4.20
    4.16
    4.10
    4.9
  • 原文地址:https://www.cnblogs.com/cnhk19/p/15060731.html
Copyright © 2011-2022 走看看