私はテンプレート プログラミングの初心者で、コードの重複を避けるために次のテンプレート関数を使用しています。
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
適切なオーバーロードを呼び出しながら、すべてのプリミティブ整数型に対して同じコードを複製することを避けることは可能ですか?