我已經使用C++進行了很長一段時間的編程,我很喜歡使用模板。我最近因爲進入嵌入式編程而一直在想的是,在模板參數不同的模板實例中,鏈接器應該如何處理代碼重複。鏈接器通常會優化掉不同C++模板實例中的重複代碼嗎?
對於這個衆所周知在鏈接時被優化掉相同的參數相同的模板的多個實例(參見:How does C++ link template instances)
但是在我的情況,我有興趣,如果連接器將識別任何複製兩個模板之間用不同參數實例化的代碼。因爲它們是不同的類型,我會假設它們不會自動摺疊。然而,由於它們可能有一些函數不依賴於模板參數,因此在兩個類之間會相同,人們可能會認爲鏈接器可以優化這些函數,從而節省空間。
這種情況下的預期行爲是什麼?
你試過godbolt了嗎? – lorro
是的,看例如:https://godbolt.org/g/jbx2ms但是,只有編譯器,據我所知,而不是鏈接器。底部有相同的代碼,鏈接器可以將其優化掉,但我不知道它通常會如何。 – Blackclaws