我有兩個重載函數等C++重載函數
void f(int);
void f(std::string);
和兩個重載函數g
具有相同的原型作爲f
,但它們是簡單封裝到f
,因此它們的實現是完全一樣的:
void g(int n) { f(n);}
void g(std::string n) { f(n); }
有沒有辦法避免兩次執行g
?我知道這可以通過模板像
template<typename T> g(T n) { f(n);}
宣佈g
做,但後來我不得不請在函數調用的類型像
g<int>(2);
g<std::string>("42");
我信步什麼的正確方法避免在不強制用戶在每個函數調用中明確寫入類型名的情況下寫入g
的執行兩次?
「但是我必須在函數中鍵入類型」,不,你不必。模板參數演繹爲你做。 –