我遇到了一个问题,需要创建一个函数来判断给定的类型是否是从其他类型派生出来的,如果是,则执行某些操作;否则执行其他操作。以下是我的代码:
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{});
}
针对类DeriviedClass
和其他基于BaseClass
的类,我想调用函数couting并希望输出Proper
,但实际输出的是Improper
。有什么建议吗?
auto Function(T) -> typename enable_if<???, void>::type
。 - n. m.