タイトルは本当にすべてです。なぜ彼らは持っていないのですか?std :: to_stringのstd :: stringのオーバーロードがなぜ発生しないのですか
namespace std
{
std::string to_string(const std::string&)
}
過負荷ですか?
私はいくつかのデータを行インデックスまたは行名で照会できるプログラムを持っています。テンプレートに最適です。アクセスされている行が欠落している場合、私はエラーメッセージを作成しようとするまで:
template <typename T>
int read(T nameOrIndex)
{
if (!present(nameOrIndex))
{
// This does not compile if T is std::string.
throw std::invalid_argument("Missing row: " + std::to_string(nameOrIndex));
}
}
私はstd
名前空間に私自身の過負荷を追加できますが、それは理想的ではありません。
見落としの可能性があります。 –
'T 'も他の型もあれば、あなたのコードはコンパイルされません。それらのすべてはどうですか?任意の型の文字列を返す 'to_string'実装があるでしょうか? 'to_string'オーバーロードを' std'(違法です)に追加するのではなく、 'read'と同じ名前空間に独自の' to_string'オーバーロードを作成します。それから 'std :: to_string'にデリゲートし、' std :: string const& 'をとるオーバーロードからそのまま引数を返します。 – Praetorian
'std :: to_string'は組み込みの数値型を文字列に変換します。文字列であるため文字列に変換する必要はありません。 –