所有整数类型的函数重载

时间:2015-01-13 02:00:25

标签: c++

我喜欢我的方法将任何整数类型作为输入(uint64_t,int,uint32_t等)。我是否需要为每个方法使用单独的方法声明来重载它?如果它收到一个意外类型的固定宽度整数,我会担心会发生一些不好的事情。

string
to_string(uint64_t t)
{
  stringstream convert;
  convert << t;
  return convert.str();
}

string
to_string(uint32_t t)
{
  stringstream convert;
  convert << t;
  return convert.str();
}

string
to_string(int t)
{
  stringstream convert;
  convert << t;
  return convert.str();
}

(我不想使用C ++ 11 to_string函数)

1 个答案:

答案 0 :(得分:3)

我不知道你对std::to_string()有什么看法,但你可以写一个模板并在整数类型上启用它:

template <typename T>
typename std::enable_if<
    std::is_integral<T>::value,
    std::string
>::type to_string(T t) 
{
    stringstream convert;
    convert << t;
    return convert.str();
}