Я пытаюсь вернуть int64_t
, если std::is_integral<>::value
истинно.
В противном случае я хотел бы называть to_int64t()
для объекта.
Моя попытка ниже не работает, поскольку частичная специализация шаблонов функций не разрешена.
CODE
#include <type_traits>
#include <cstdint>
template<class T,bool is_integral_type>
int64_t to_int64t( const T& t )
{
return t;
}
template<class T>
int64_t to_int64t<T,std::is_integral<T>::value>( const T& t )
{
return t;
}
template<class T>
int64_t to_int64t<T,!std::is_integral<T>::value>( const T& t )
{
return t.to_int64t();
}
int main()
{
int64_t i = 64;
auto x = to_int64t( i );
}