Mam problem z tworzeniem funkcji, która dla danego typu, jeśli pochodzi od innego, robi coś, a dla wszystkich innych przypadków robi coś innego. Mój kod:Funkcja szablonu C++ dla klasy pochodnej ze std :: is_base_of
class BaseClass {};
class DerivedClass : public BaseClass {};
template <typename T>
void Function(typename std::enable_if<std::is_base_of<BaseClass, T>::value, T>::type && arg) {
std::cout << "Proper";
}
template <typename T>
void Function(T && arg) {
std::cout << "Improper";
}
void test() {
Function(DerivedClass{});
}
Dla klasy DeriviedClass
i inne oparte na BaseClass
Chciałbym funkcję coutingProper
zadzwonić, ale CoutsImproper
. Jakieś sugestie?
T jest w niewyspecjalizowanych wywnioskować kontekście tutaj, aby przejść enable_if typu Wynik: 'auto funkcji (T) -> typename enable_if ??, void> :: typem. –