Re[2]: Варинант без RTTI
От: Maniacal Россия  
Дата: 29.05.18 07:36
Оценка:
Или, как вариант:

template <class T, class I> struct is_iface_supported : std::false_type
{
};

class A
{
};

class B
{
};

class C : public A
{
};
template <> struct is_iface_supported <C, A> : std::true_type
{
};

class D : public B
{

};
template <> struct is_iface_supported <D, B> : std::true_type
{
};

class E : public A, public B
{

};
template <> struct is_iface_supported <E, A> : std::true_type
{
};
template <> struct is_iface_supported <E, B> : std::true_type
{
};


int main()
{

    A a;
    B b;
    C c;
    D d;
    E e;

    if (is_iface_supported<decltype(c), A>::value) puts("c is support interface A");
    if (is_iface_supported<decltype(c), B>::value) puts("c is support interface B");
    if (is_iface_supported<decltype(d), A>::value) puts("d is support interface A");
    if (is_iface_supported<decltype(d), B>::value) puts("d is support interface B");
    if (is_iface_supported<decltype(e), A>::value) puts("e is support interface A");
    if (is_iface_supported<decltype(e), B>::value) puts("e is support interface B");

return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.