我想编写一个模板,在编译时确定一个类型是否是 stl 容器。
我有以下代码:
struct is_cont{};
struct not_cont{};
template <typename T>
struct is_cont { typedef not_cont result_t; };
但我不确定如何为 std::vector<T,Alloc>, deque<T,Alloc>, set<T,Alloc,Comp>
等创建必要的专业化……
原文由 Xander Tulip 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,您定义您的主模板,该模板将有一个在默认情况下为 false 的成员:
然后,您将为您的容器类型定义部分特化,其值为 true:
然后对于您要检查的类型 X,使用它