c++ templateの特殊化について
c++のテンプレートで
template<class T>
T get(std::string str)
{
if (std::is_signed<T>)
{
return std::stoll(str);
}
if(std::is_unsigned_v<T>)
{
return std::stoull(str);
}
if(std::is_floating_point_v<T>)
{
return std::stold(str);
}
return T(str);
}
みたいなことをコンパイル時に、
整数なら
template<class T>
T get(std::string str)
{
return std::stoll(str);
}
浮動小数少数なら
template<class T>
T get(std::string str)
{
return std::stold(str);
}
それ以外なら
template<class T>
T get(std::string str)
{
return T(str);
}
のように分けて実装したいのですが
いちいち型ごとに
template<>
int get<int>(std::string str)
{
return std::stold(str);
}
とするのは面倒なのでもっと効率的な書き方は存在しませんか?