Усиление черт, чтобы проверить, является ли объект контейнером STL
Я выполняю рефакторинг библиотеки сериализации в моем проекте, чтобы она компилировалась с -std=c++11
и хотите определить, является ли объект контейнером STL, например
is_stl_deque<T>::value
is_stl_list<T>::value
is_stl_vector<T>::value
is_set<T>::value
is_map<T>::value
is_pair<T>::value
is_sequence<T>::value
Есть ли какая-либо повышающая черта, чтобы проверить, является ли объект контейнером STL?
Если нет (я не мог найти), как я могу реализовать один?
1 ответ
Решение
Я не знаю, есть ли что-то в импульс, но вещи в вашем списке легко реализуемы с частичной специализацией:
template<class T>
struct is_vector : std::false_type { };
template<class T, class Alloc>
struct is_vector<std::vector<T, Alloc>> : std::true_type { };