Godot Source Code Note 1
auto 与 template
先贴一下Godot源码core目录下typedefs.h文件中一个函数定义:
可以看到,这里采用了更加灵活的函数模板,使得传递不同类型的实参成为可能。C++14标准中auto关键字可以对返回类型进行推导。
但在C++11标准中,以上写法无法编译通过,应改写为:
虽然C++14中可以省略尾置调用类型的声明,但会有一些问题,比如以下代码:
如果auto推导的变量是引用的话,引用属性会被忽略,所以ReturnRefAuto返回值推导为T,而不是T&。
auto如果作为函数形参声明,则与template功能重复。
但在C++20标准中,auto关键字也可用于函数形参类型推导,比如最开始的MIN函数可以改写为:
部分参考:<<现代C++语言核心特性解析>>。
如侵删。
欢迎评论指正。