为什么对重载函数的调用不明确
Why is this call to overloaded function ambiguous?
我是模板编程的初学者,我正在使用以下模板函数来避免代码重复:
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
重载?
chris在对该问题的评论中指出,问题是我使用的是VS2010,它没有完全实现c++11标准。std::to_string
仅实现long long
、unsigned long long
、long double
的过载。有关此事的更多详细信息,请参阅此相关问题。
相关文章:
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 为什么调用不明确的 ctor 时没有编译时错误?
- G++ 错误:重载的"abs(无符号 int)"的调用不明确
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 错误:重载'stoi(nlohmann::basic_json<>::value_type&)'的调用不明确
- 构建 castalia 时出错:重载函数的调用不明确
- 错误:重载的"abs(double)"调用不明确
- 结构构造函数调用不明确
- 错误:对重载函数的调用不明确
- 对重载'swap(char&, char&)'的调用不明确
- 对可变模板函数的调用不明确
- C++ 编译错误:重载的"<function_name>(char*&)"调用不明确
- VS2010中具有list_of的调用不明确
- 为什么这个运算符=调用不明确
- 为什么对重载函数的调用不明确
- C++中重载运算符函数对构造函数的调用不明确
- 为什么这些重载函数调用不明确
- 重载write(int)的调用不明确
- 带有重载r值引用函数的调用不明确
- 传递0而不是1时,sfinae调用不明确