所有整数类型的函数重载

Function overloading for all integer types

本文关键字:函数 重载 类型 整数      更新时间:2023-10-16

我希望我的方法将任何整数类型作为输入(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 功能)

我不知道

你对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();
}