4
假設我正在編寫一個類,它表示一個數學對象,爲定義各種標準操作有意義。重載自定義類型的標準數學函數
通過重載算術運算符,我可以享受這樣一個事實:使用它們的任何模板化算法在給予我的課程時都能按預期工作。但是如果算法使用類似std :: pow?
標準似乎說明,只有在STD命名空間功能模板特是允許的,這意味着我不能寫我自己的的std ::超載戰俘我的課。但是,如果真的如此,那麼確保通用性的最佳方法是什麼?
假設我正在編寫一個類,它表示一個數學對象,爲定義各種標準操作有意義。重載自定義類型的標準數學函數
通過重載算術運算符,我可以享受這樣一個事實:使用它們的任何模板化算法在給予我的課程時都能按預期工作。但是如果算法使用類似std :: pow?
標準似乎說明,只有在STD命名空間功能模板特是允許的,這意味着我不能寫我自己的的std ::超載戰俘我的課。但是,如果真的如此,那麼確保通用性的最佳方法是什麼?
Yakk的評論是正確的答案。你把你的pow
放在你的名字空間裏,就像標準的pow
在std::
中一樣。參數依賴查找意味着pow(x,y)
將在x
和y
類型的命名空間中查找。
有經驗的圖書館編寫者知道如何有效地使用ADL,但是TBH我不會立即知道一個圖書館有很好的理由在未知類型的對象上調用pow
。
讓他們通過adl使用你的'pow'? – Yakk