增强特性以检查对象是否为STL容器

Boost traits to check if an object is STL container

本文关键字:是否 STL 容器 对象 检查 增强      更新时间:2023-10-16

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

是否有boost trait来检查对象是否为STL容器?

如果没有(我找不到任何),我如何实现一个

我不知道在boost中是否有任何东西,但是您的列表中的东西很容易实现部分专门化:

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