c++ - 为什么对重载函数的调用不明确?

标签 c++ templates overloading

我是模板编程的初学者,我正在使用以下模板函数来尝试避免代码重复:

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 longunsigned long longlong double 的重载。请参阅this相关问题以了解有关此事的更多详细信息。

关于c++ - 为什么对重载函数的调用不明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335247/

相关文章:

c++ - 可以省略 main 函数中的返回类型吗?

c# - 从 WindowsCE 上的非托管 C++ 应用程序调用 C# Dll

c++ - 在 MainWindow 获得焦点之前,QPushButton 处于非事件状态

css - 如何将 Drupal 模板绑定(bind)到具有多个环境的 Web 表单?

c++ - 尝试使用 std::function 实例化模板时出现错误 C2371

c++ - 这与函数重载有什么关系?

C++ 遍历 vector 拷贝

c++ - 为什么要使用专门的模板类?

C# 扩展方法重载

java - 关于 Java 泛型和子类