由於模板是在頭文件中定義的,編譯器能夠確定內聯函數是否有利,它有什麼意義嗎?我聽說現代編譯器知道何時內聯函數並忽略inline
提示。在模板中使用內聯關鍵字有意義嗎?
編輯:我想接受這兩個答案,但這是不可能的。要關閉我接受phresnel這個問題的答案,因爲它獲得多數選票,他是正式的權利,但正如我在評論中提到,我認爲小狗的和組件10的答案是正確之輩,從不同的角度來看。
問題出在C++語義上,在inline
關鍵字和內聯的情況下不嚴格。 phresnel表示「如果你的意思是內聯寫入」,但inline
的實際含義並不清楚,因爲它從原來的含義演變爲「阻止編譯器對ODR違規行爲嗤之以鼻」的指令爲Puppy說。
明確的專業化是真的 - 它們就像普通的功能一樣。但是在這裏 - >'template inline T g(T){}'不需要內聯,你可以寫'template T g(T){}' –
doc
可以寫成true。但是這並不意味着內聯,即使它看起來像這樣。 Vandevoorde和Josuttis在_C++模板中也完全說明了這一點:完整的Guide_ –
模板可以有多個定義(3.2/5) - > http://stackoverflow.com/a/10211420/205955我聲明這並不意味着它們是正式內聯的。但是,這一切都歸結於實踐。所以,從不同的角度來看,這兩個答案都是正確的。 – doc