ゆとりーなの日記

日記的な事を書いて行くと思はれる

VC++2010のto_stringは使いものにならない

std::to_stringは簡単に言うと数値を文字列に変換してくれる関数です。VC++2010では次のコードがオーバーロードが解決できずにコンパイルが通りません。

std::to_string(0);
int a = 0;
std::to_string(a);
double b =  0.0;
std::to_string(b);

というのもVC++2010のto_stringは次の3つの形式しか用意されていないのです。

string to_string(long long val);
string to_string(unsigned long long val);
string to_string(long double val);

というわけでこれとかは問題なくコンパイル通ります。

long double c = 0.0;
std::to_string(c);

規格n3225の645頁を見る限りだと

string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);

とあるので、上の3種も本来ならばコンパイルが通りそうなものですがどうなのでしょう。VC++2010の怠慢な気がするのですね。
まぁ大人しくlexical_cast使っときましょう。