提升特征以检查对象是否为STL容器

时间:2014-08-21 07:05:43

标签: c++ boost stl typetraits

我正在我的项目中重构一个序列化库,以便它可以编译 -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 个答案:

答案 0 :(得分:7)

我不知道是否有任何提升,但列表中的内容很容易通过部分专业化来实现:

template<class T>
struct is_vector : std::false_type { };

template<class T, class Alloc>
struct is_vector<std::vector<T, Alloc>> : std::true_type { };