std::is_integral<>::value
doğruysa, int64_t
döndürmeye çalışıyorum.Bir uygulamayı seçmek için std :: is_integral <> öğesini nasıl kullanırım?
Aksi takdirde, nesne üzerinde to_int64t()
numaralı telefonu aramak istiyorum.
İşlevlerim şablonlarının kısmi özelleştirilmesine izin verilmediğinden aşağıdaki denemem başarısız oluyor.
KOD
#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);
}
olası yinelenen: Ben bu kullanım şeklini bu tekniği kullanmak ister ama ilgili tasarım durumlarda kullanışlı gelebilir çünkü o gösteriyorum - bir
detail
ad alanında) kısmen özelleşmiş olabilir ve küresel bir iletici sağlamak http://stackoverflow.com/questions/12073689/c11-template-function-specialization-for-integer-types – legends2k