kontrola typu w klasie

kontrola typu w klasie
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeśli mam szablon klasy, to mogę kontrolować z jakim typem danych został obiekt tej klasy stworzony?
Dla przykładu mając

Kopiuj
template <typename T>
class eq {
... };

eq <double> A;

mogę w klasie rzucić wyjątek, że doubla nie lubimy i nie chcemy z pewnych powodów?

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
2

Dodaj specjalizację:

Kopiuj
template<>
class eq<double>
{
////rzuc wyjatek
};
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki wielkie.

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
2

Możesz też użyć std::enable_if

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
2

Do tego jest właśnie static_assert:

Kopiuj
template <typename T>
class X {
  static_assert(!std::is_same<T, double>(), "Nie lubimy double");
};

http://ideone.com/cwutyJ

satirev
  • Rejestracja: dni
  • Ostatnio: dni
0

Są jeszcze concepts ale ciężko by było tym wykryć double ;p

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.