我是模板编程的初学者,我正在使用以下模板函数来尝试避免代码重复:
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:对重载函数的不明确调用
。我缺少什么?是否可以避免为所有原始整数类型重复相同的代码,同时仍然调用适当的 std::to_string
重载?
最佳答案
正如 chris 在问题评论中指出的那样,问题是我使用的是 VS2010,它没有完全实现 c++11 标准。 std::to_string
仅实现 long long
、unsigned long long
、long double
的重载。请参阅this相关问题以了解有关此事的更多详细信息。
关于c++ - 为什么对重载函数的调用不明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335247/