2014-01-26 75 views
4

假設我正在編寫一個類,它表示一個數學對象,爲定義各種標準操作有意義。重載自定義類型的標準數學函數

通過重載算術運算符,我可以享受這樣一個事實:使用它們的任何模板化算法在給予我的課程時都能按預期工作。但是如果算法使用類似std :: pow

標準似乎說明,只有在STD命名空間功能模板特是允許的,這意味着我不能寫我自己的的std ::超載戰俘我的課。但是,如果真的如此,那麼確保通用性的最佳方法是什麼?

+1

讓他們通過adl使用你的'pow'? – Yakk

回答

3

Yakk的評論是正確的答案。你把你的pow放在你的名字空間裏,就像標準的powstd::中一樣。參數依賴查找意味着pow(x,y)將在xy類型的命名空間中查找。

有經驗的圖書館編寫者知道如何有效地使用ADL,但是TBH我不會立即知道一個圖書館有很好的理由在未知類型的對象上調用pow

相關問題