最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Godot Source Code Note 4

2023-06-28 23:47 作者:中專人  | 我要投稿

模板參數(shù)展開

可變參數(shù)模板分為類型模板形參包與函數(shù)形參包。

先上一段Godot源碼:

可以看到,代碼中使用了一種初始化列表展開的方法,本文簡要介紹幾種類似方法。

C++11之前:

> 遞歸模板函數(shù)

此方法必須要定義一個遞歸終止函數(shù),很不簡潔。

遞歸函數(shù)調(diào)用容易引起棧溢出。

C++11:

> 初始化列表展開

這里借助了逗號表達式的特性,括號中用逗號分隔的表達式會以從左往右的順序執(zhí)行,最后返回最右邊表達式的結果。在(std::cout << args << std::endl, 0)...包展開中,逗號左邊的輸出語句先被執(zhí)行,然后逗號右邊的0返回作為數(shù)組的元素。因此,如果sizeof...(args)為3的話,那么temp數(shù)組為{0, 0, 0}。

上面展示的Godot源代碼即使用了此方法。

C++17:

> 折疊表達式

相當簡潔,但要掌握集中折疊規(guī)則。

容易出錯。

> constexpr if 編譯時條件判斷

constexpr if語句使得模板函數(shù)在編譯期就可以完成條件判斷,而不是運行時。

constexpr if語句起到了一個類似條件編譯的效果。

挖個坑,以后有機會可以談談constexpr。


部分參考《現(xiàn)代C++語言核心特性解析》《現(xiàn)代C++教程》

如侵刪。
歡迎評論指正。

Godot Source Code Note 4的評論 (共 條)

分享到微博請遵守國家法律
紫阳县| 长丰县| 博乐市| 彰化县| 吉木乃县| 安龙县| 习水县| 棋牌| 襄樊市| 吉安县| 青浦区| 塔河县| 新郑市| 额尔古纳市| 德州市| 呼图壁县| 碌曲县| 上高县| 启东市| 扶绥县| 镇江市| 罗甸县| 乐东| 洪洞县| 清涧县| 寿光市| 万宁市| 米泉市| 保山市| 新宾| 邯郸县| 林口县| 卢氏县| 镇雄县| 麻栗坡县| 三门峡市| 孝感市| 中超| 茌平县| 虹口区| 阿尔山市|