2

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

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重载?

4

1 回答 1

2

正如克里斯在对问题的评论中指出的那样,问题是我使用的是 VS2010,它没有完全实现 c++11 标准。std::to_string仅实现long long, unsigned long long,long double的重载 有关此事的更多详细信息,请参阅相关问题。

于 2012-09-09T14:02:25.740 回答