0
參考cppreference's section on function templates:爲什麼函數模板的顯式實例不使用內聯或constexpr
的顯式實例函數模板或類模板的成員函數 不能使用inline或constexpr
這些主題,inline
和constexpr
,似乎是分開和無關。爲什麼這個限制存在?
參考cppreference's section on function templates:爲什麼函數模板的顯式實例不使用內聯或constexpr
的顯式實例函數模板或類模板的成員函數 不能使用inline或constexpr
這些主題,inline
和constexpr
,似乎是分開和無關。爲什麼這個限制存在?
因爲它們服務於相反的目的。
顯式實例的一點是,在源文件,爲您的項目需要,這樣你就不必在你header file完全定義模板,模板提供的定義。
inline
的要點是允許標頭中的函數定義 - 以便跨多個翻譯單元的函數的多個定義可以合併爲一個。
constexpr
函數必須具有可見的編譯器實際能夠在編譯時調用它們的定義。沒有鏈接時間constexpr
。
明確實例化inline
或constexpr
函數沒有任何意義 - 這些函數模板必須已經在頭文件中定義,因此可以隱式地按需實例化。
因爲'inline'和'constexpr'都可能導致函數沒有實際的*實例*當然,這違背了整個「顯式*實例化」部分。 –