我有两个重载函数等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
的执行两次?
“但是我必须在函数中键入类型”,不,你不必。模板参数演绎为你做。 –