У меня есть вектор std::type_index
, который указывает типы признаков, которые есть у конкретного узла. Я реализую функцию, которая проверяет, поддерживает ли узел определенный тип. Это выглядит так:
std::vector<std::type_index> traits;
...
template <typename T>
bool hasTrait() {
return std::find(traits.begin(), traits.end(), typeid(T)) != traits.end();
}
Однако это не будет работать, если тип T
является производным типом некоторого базового типа в чертах. Чтобы решить эту проблему, я хотел использовать std::is_convertible
.
Однако у меня есть доступ только к std::type_index
типа, поэтому я не могу этого сделать. Требуется что-то подобное: std::is_convertible<traitTypeIndex::type, T>