У меня есть класс свойств, который реализует некоторый интерфейс в зависимости от того, определен ли его тип параметра шаблона:
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 для обнаружения определенных типов с неполными полями.