Hej. Mam pewną klasę, chciałbym żeby klasa ta działała tylko z liczba całkowitymi/zmiennoprzecinkowymi.
Przedtem wykorzystywałem zwykłego static asserta:
#include <type_traits>
#include <cstdio>
#include <string>
template<class _T>
class Class {
public:
Class() {
static_assert(std::is_arithmetic<_T>::value, "Error");
};
};
int main() {
Class<int> class1;
Class<float> class2;
Class<std::string> class3;
getchar();
return 0;
}
Teraz robię to tak:
template<class _T, typename std::enable_if<std::is_arithmetic<_T>::value>::type* = 0>
class Class {
public:
Class() {};
};
int main() {
Class<int> class1;
Class<float> class2;
Class<std::string> class3;
getchar();
return 0;
}
Działać działa ale czy ktoś mógłby powiedzieć czy jest to zrobione poprawnie?