我是模板编程的初学者,我正在使用以下模板函数来避免代码重复:
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
重载?
答案 0 :(得分:2)
正如克里斯在对问题的评论中指出的那样,问题是我使用的是VS2010,它没有完全实现c ++ 11标准。 std::to_string
仅实现long long
,unsigned long long
,long double
的重载。有关此事的详细信息,请参阅this相关问题。