C 的模版,到底是功能強大的工具,還是荒謬拙劣的小伎倆

時間 2021-06-28 08:54:51

1樓:ll323

是一種semantic層面的meta programming機制 (和syntactic層面的meta programming 比如macro 是互補的)

作為semantic meta programming的工具模版最大的用途是操控/魔改/自定義 C++的型別系統這是許多主流語言都缺乏的非常高階的功能從這個用途來說是功能強大的工具

至於模版操作型別系統以外的用例比如編譯期計算就可以說是一些歪門邪道的小伎倆了在modern C++中也不再使用模版表達這樣的需求而會有新的語言特性(consteval, constexpr)讓你用正常的寫法直接不繞彎子的表達出你需要的功能

2樓:

是不是功能強大的工具看怎麼用,但絕對不是荒謬拙劣的小伎倆

看看大道至簡的 Go 吧(Go 語言還不正式支援泛型),這你能說模板是荒謬拙劣的小伎倆?

3樓:C十十20年

當用則用是合理的態度,逢則必用真的有點瘋狂。有人研究模板像研究紅樓夢一樣,確實有點不值得和無聊。只有去構造自己的模板庫的人,才有必要去仔細研究STL。

否則,學好模板定義基本技能,以及例項化、特化和型別變參遞迴展開定義,用時能夠看懂模板庫就行了。遞迴展開及正則化貌似功能強大,實則可能使你多定義N多函式或類,造成你的程式冗長以及編譯極慢。

思想到底是脆弱的還是強大的?

說它脆弱,是因為只要有哪怕一絲絲的罅隙,偌大的思想體系都會在恰好的攻擊面前轟然倒塌。比如,漢武帝已降,主導中國近兩千年的儒家思想,在二十世紀初被它的子孫後代棄如敝履。說它強大,是因為只要還有一絲絲的生存土壤,再微小再落後的思想總可以萬物生存。比如,算命這麼愚昧的東西,本以為會隨著解放前那一輩人的隕落...

CRPG的C到底是哪個單詞?

lll LLL C肯定是代表電腦.因為這個詞開始就是為了區別於TRPG T就是table,桌子,TRPG就是桌面跑團角色扮演所以其實這個詞是為了來區別遊戲的平台,乙個是桌面,乙個是電腦而又因為CRPG是美國那邊起來的,各種泛式慢慢形成,在現在的語境下,CRPG往往也可以用來指代 美式RPG 用來對應...

男高音的highC到底是C5還是C6

江左明月 男譜的話是C5 c3,只有這個才有經濟價值。C6的感覺大約是周深 與張也老師 在春晚 燈火裡的中國 中的最高音,周深唱的應該是弱混的C6。我沒仔細聽,不一定準 手動捂臉 Herr Yang 一般的男高音的嗨C就是小字2組的c或者說是C5。男高音音域圖 如圖所示,一般來說大部分男高音都能有綠...