我有一个trait类,它根据是否定义了其模板参数类型来实现某些接口:
template<class T, class=void>
struct traits {
// impl for undefined types
};
template<class T>
struct traits<T, decltype(void(sizeof(T)))> {
// impl for defined types
};
这很好用,但是在定义类型但成员类型不完整的情况下出现错误,例如,传递某些模板模板本身未定义的类模板实例时。
因此,我想知道是否存在一些SFINAE-fu来检测具有不完整字段的定义类型。