Godot Source Code Note 1
auto 與 template
先貼一下Godot源碼core目錄下typedefs.h文件中一個函數(shù)定義:
可以看到,這里采用了更加靈活的函數(shù)模板,使得傳遞不同類型的實參成為可能。C++14標準中auto關鍵字可以對返回類型進行推導。
但在C++11標準中,以上寫法無法編譯通過,應改寫為:
雖然C++14中可以省略尾置調(diào)用類型的聲明,但會有一些問題,比如以下代碼:
如果auto推導的變量是引用的話,引用屬性會被忽略,所以ReturnRefAuto返回值推導為T,而不是T&。
auto如果作為函數(shù)形參聲明,則與template功能重復。
但在C++20標準中,auto關鍵字也可用于函數(shù)形參類型推導,比如最開始的MIN函數(shù)可以改寫為:
部分參考:<<現(xiàn)代C++語言核心特性解析>>。
如侵刪。
歡迎評論指正。
標簽: