无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
镇安县| 永丰县| 进贤县| 安龙县| 习水县| 赣榆县| 石狮市| 神农架林区| 浦江县| 方城县| 静安区| 资兴市| 定南县| 保山市| 宜黄县| 东丰县| 长治县| 宽甸| 营山县| 平阳县| 兴化市| 六枝特区| 县级市| 武宣县| 东乡县| 延长县| 霍城县| 宝兴县| 祥云县| 中卫市| 漳浦县| 板桥市| 齐河县| 广安市| 岳普湖县| 阜南县| 旅游| 内江市| 谷城县| 洞头县| 云安县|