C++11 模板元編程 - 后記


當(dāng)1994年蔽豺,Erwin Unruh在C++標(biāo)準(zhǔn)委員會(huì)上演示了通過(guò)C++模板在編譯期計(jì)算素?cái)?shù)的程序后担映,C++模板元編程的能力就已經(jīng)被人們認(rèn)識(shí)到了嘱蛋。但是由于函數(shù)式編程和廣大程序員所熟悉的命令式編程存在著較大差異,以及C++標(biāo)準(zhǔn)和C++編譯器對(duì)模板元編程支持上的很多漏洞媒抠,導(dǎo)致了模板元編程的代碼在一般程序員的眼中十分的晦澀難懂弟断。所以隨后的很多年,模板元編程只被掌握在少數(shù)C++程序員手中趴生,而在更大多數(shù)人眼中則更似是一種奇技淫巧阀趴。

雖然如此,由于人們對(duì)計(jì)算機(jī)程序的表達(dá)力和性能的同時(shí)追求苍匆,C++模板元編程的使用還是滲透在非常多優(yōu)秀的框架和程序庫(kù)中刘急。往往你看一個(gè)漂亮的C++庫(kù)或者框架的源碼,都會(huì)驚奇的發(fā)現(xiàn)浸踩,為其漂亮點(diǎn)睛叔汁、化腐朽為神奇的那段核心代碼中,都離不開(kāi)模板元編程的身影检碗。因?yàn)槟0逶幊痰木幾g期計(jì)算和代碼生成的能力据块,可以讓你的程序更加的靈活、簡(jiǎn)潔折剃、安全并且高效另假。

正是如此,C++標(biāo)準(zhǔn)庫(kù)STL中就使用了非常多的模板元編程技巧怕犁,而且也給程序員提供了很多好用的模板元編程工具浪谴,例如我們之前提到的豐富的type_traits工具集。而boost中的mpl因苹,則是一個(gè)完全為模板元編程打造的庫(kù)苟耻。它實(shí)現(xiàn)了完備的編譯期數(shù)據(jù)結(jié)構(gòu)和算法,以及各種常用的元編程模式扶檐。Mpl甚至還實(shí)現(xiàn)了一套編譯期的lambda架構(gòu)凶杖,用于在模板元編程中使用編譯期的lambda表達(dá)式。但是遺憾的是款筑,mpl的實(shí)現(xiàn)過(guò)程中同時(shí)大量的使用了boost的預(yù)處理元編程技術(shù)智蝠,導(dǎo)致代碼非常的晦澀難懂腾么,對(duì)想通過(guò)閱讀mpl源碼來(lái)學(xué)習(xí)模板元編程的同學(xué)增加了非常大的噪音干擾。

自從C++11標(biāo)準(zhǔn)發(fā)布后杈湾,C++語(yǔ)言和主流編譯器對(duì)模板以及編譯期計(jì)算的支持已經(jīng)逐漸完備解虱,同時(shí)標(biāo)準(zhǔn)修復(fù)了不少漏洞,使得模板元編程的代碼可以書(shū)寫(xiě)的更加自然和簡(jiǎn)單漆撞。為此殴泰,我基于C++11標(biāo)準(zhǔn)實(shí)現(xiàn)了一套針對(duì)C++模板元編程的基礎(chǔ)庫(kù)TLP。這個(gè)庫(kù)的主要目的是幫助大家更容易地學(xué)習(xí)C++模板元編程浮驳,正因如此我在寫(xiě)的過(guò)程中不斷地追求代碼的表達(dá)力和清晰性悍汛。為了能夠通過(guò)測(cè)試用例來(lái)展示庫(kù)組件的用法,我專門(mén)編寫(xiě)了一個(gè)面向模板元編程進(jìn)行編譯期測(cè)試的xUnit測(cè)試框架至会,TLP庫(kù)中的所有組件都經(jīng)過(guò)了該測(cè)試框架的測(cè)試离咐。

雖然你的軟件可以直接依賴整個(gè)TLP庫(kù),但是對(duì)于C++這么一門(mén)讓程序員追求極致的語(yǔ)言奉件,學(xué)會(huì)TLP中模板元編程的設(shè)計(jì)技巧宵蛀,然后按需所取地去解決自己的問(wèn)題顯得更為實(shí)際。而且模板元編程的特點(diǎn)決定了它不應(yīng)該出現(xiàn)在你軟件中的每一處县貌,正常情況下只是在最核心地方去解決一些關(guān)鍵的問(wèn)題术陶。所以你應(yīng)該把TLP庫(kù)當(dāng)做一個(gè)素材庫(kù),學(xué)習(xí)并掌握里面每個(gè)組件和算法的設(shè)計(jì)窃这,學(xué)會(huì)針對(duì)你的具體問(wèn)題采用類似的設(shè)計(jì)技巧去解決問(wèn)題瞳别。為了讓大家能夠更好地學(xué)習(xí)TLP庫(kù)中的代碼設(shè)計(jì),我寫(xiě)了這篇手冊(cè)杭攻,介紹了模板元編程的基礎(chǔ)知識(shí)以及TLP庫(kù)中關(guān)鍵組件和算法的實(shí)現(xiàn)技巧祟敛,最后還列舉了模板元編程的一些具體應(yīng)用。在這個(gè)手冊(cè)中兆解,我同時(shí)提到了很多對(duì)編程語(yǔ)言和軟件設(shè)計(jì)的理解馆铁,希望也會(huì)對(duì)大家有用。

正如我最開(kāi)始所說(shuō)锅睛,模板元編程是中級(jí)C++程序員邁向高級(jí)的必經(jīng)之路埠巨,希望本文以及TLP庫(kù)中的代碼對(duì)大家更好地學(xué)習(xí)模板元編程起到幫助,使得我們可以在C++中以一種更有效现拒、更酷的方式去解決問(wèn)題辣垒。

** 作者: MagicBowen**
** Email:e.bowen.wang@icloud.com **
** 轉(zhuǎn)載請(qǐng)注明作者信息,謝謝印蔬!**


返回 C++11模板元編程 - 目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勋桶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌例驹,老刑警劉巖捐韩,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鹃锈,居然都是意外死亡荤胁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)屎债,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仅政,“玉大人,你說(shuō)我怎么就攤上這事扔茅∫丫桑” “怎么了秸苗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵召娜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我惊楼,道長(zhǎng)玖瘸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任檀咙,我火速辦了婚禮雅倒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弧可。我一直安慰自己蔑匣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布棕诵。 她就那樣靜靜地躺著裁良,像睡著了一般。 火紅的嫁衣襯著肌膚如雪校套。 梳的紋絲不亂的頭發(fā)上价脾,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音笛匙,去河邊找鬼侨把。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妹孙,可吹牛的內(nèi)容都是我干的秋柄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蠢正,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骇笔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜘拉,失蹤者是張志新(化名)和其女友劉穎萨西,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旭旭,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谎脯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了持寄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片源梭。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖稍味,靈堂內(nèi)的尸體忽然破棺而出废麻,到底是詐尸還是另有隱情,我是刑警寧澤模庐,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布烛愧,位于F島的核電站,受9級(jí)特大地震影響掂碱,放射性物質(zhì)發(fā)生泄漏怜姿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一疼燥、第九天 我趴在偏房一處隱蔽的房頂上張望沧卢。 院中可真熱鬧,春花似錦醉者、人聲如沸但狭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)立磁。三九已至,卻和暖如春搞莺,著一層夾襖步出監(jiān)牢的瞬間息罗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工才沧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迈喉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓温圆,卻偏偏與公主長(zhǎng)得像挨摸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岁歉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容