码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • cxx17 尾随返回类型


    多数情况下,我都很少会用到尾随返回类型。

    这是因为习惯的力量。

    不过个人而言,必须不断打破自己的惯性。

    所以关于尾随返回类型,我也有一些看法,可以记录一下。

    尾随返回类型

    何者?

    尾随返回类型( trailing return type declaration )自从 C++11 起被引入以来,经受了各式各样的赞扬与意料之外的保守势力的反对。

    所谓尾随返回类型,无非是将函数声明格式中的返回类型部分予以后置,而其原来的位置则采用 auto 关键字代替。

    这样的做法一方面是向现代编程语言的风格靠齐,另一方面也是强调自动推定类型的一个开始。从那时起,自动推定类型经历了 11 年的演进,在 C++17 开始以来,不但获得了广泛的编译器支持(该填的坑大抵也算是填的差不多了),而且着着实实地改善了程序员的生活质量。

    现在用 auto 这个词的时候大家也没什么心理负担了。而当初 auto 改变其原有的语义转而变为自动推定的标志时,很多保守派是极力反对的,因为这样或会引发程序员对类型不求甚解、胡乱运用、甚至引发意料外的误用问题。

    那么,尾随返回类型的典型开始是这样:

    auto main() -> int {
      //...
      return 0;
    }
    
    // = int main() { return 0; }

    所以,它的范式一目了然:对于传统的函数声明

    int func_name(int x, int y);

    来说,新的尾随返回类型声明方法看起来像这样:

    auto func_name(int x, int y) -> int;

    它看起来就好像只不过是一支语法糖而已,是吗?

    强调自动推定从这时候开始

    其实,并不然,这就是我们所提到的 auto 的身份转变和被强调的开始。

    使用尾随返回类型,首先是部分强制的。即是说,当你正在使用 lambda 表达式时,如果需要返回值,怎么办?

    此时有两种做法。

    一是什么也不做,那么自动推定将会从调用者签名以及 lambda 表达式的 return 语句中试图完成自动推导。

    #include 
    #include 
    
    auto caller(std::function sum) {
      return sum(1, 3);
    }
    
    int main(){
      std::cout << caller([](uint64_t a, uint64_t b){
        return a+b;
      }) << '\n&
  • 相关阅读:
    js实现数组扁平化的多种方式
    在C#中使用Halcon开发视觉检测程序
    迁移学习、领域自适应、多源迁移学习、多任务学习
    2022年武汉名品认定条件以及申报奖励补贴标准汇总
    Hrnet_DEKR 简单理解和计算评价指标
    Linux系统下进程的概念《一》
    在Vue中使用vant的方法,踩坑in .node_modulesvantesdialogDialog.js
    Linux内核与驱动面试经典“小”问题集锦(7)
    kubeadm升级k8s集群
    ChatTTS web应用;基于文本指导的图像生成;使用Groq和Llama3在几秒内生成整本书;协作机器人画家,可以根据语言描述或图像在画布上作画
  • 原文地址:https://blog.csdn.net/m0_73257876/article/details/126579208
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号