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

質問へのコメントで chris が指摘したように、問題は私が VS2010 を使用していることです。VS2010 は c++11 標準を完全には実装していません。、、 のstd::to_stringオーバーロードのみを実装します。この問題の詳細については、この関連する質問を参照してください。long longunsigned long longlong double

于 2012-09-09T14:02:25.740 に答える