Усиление черт, чтобы проверить, является ли объект контейнером 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 { };
Другие вопросы по тегам