与えられた型に対して、他の型から派生したものであれば何か他のものから派生している場合、他のすべての場合には何か他のことをするという問題があります。私のコード:BaseClass
に基づいて、クラスDeriviedClass
及びその他についてはstd :: is_base_ofを持つ派生クラスのC++テンプレート関数
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{});
}
私はProper
をcouting機能を呼びたいが、それcoutsImproper
と思います。助言がありますか?
Tは、結果の型にenable_if移動し、ここでは非推測コンテキストにある: 'オート機能(T) - >型名enable_if ??, void> :: type'が。 –