我是模板编程的初学者,我正在使用以下模板函数来避免代码重复:
template <class T>
void foo(T iInteger) {
// ... same algorithm for all integer types
std::to_string( static_cast<T>(iInteger) ); // C2668: ambiguous call to overloaded function
// ... end of algorithm
}
我的foo
函数将仅使用原始整数类型调用。我天真地认为这static_cast
足以告诉编译器std::to_string()
使用哪个重载,但这似乎还不够,因为我仍然得到一个C2668: ambiguous call to overloaded function
. 我错过了什么?是否可以避免为所有原始整数类型重复相同的代码,同时仍然调用适当的std::to_string
重载?