【发布时间】:2011-10-01 00:01:39
【问题描述】:
我可以使用 C++ Type Traits 来检查一个类型是否是类似 STL 的容器吗?我已经知道 GCC 的内置函数 __is_class,但如果可能的话,我想更具体一点。
【问题讨论】:
-
定义“STL-like”的含义。
-
@JohnPS: 一个容器需要
value_type,iterator,const_iterator,reference,const_reference,pointer,difference_type,size_type, @9876543end()、size()、max_size()、empty()和swap(),并且必须满足其他一些简单的条件。 -
该死,我猜
std::forward_list不是一个容器(它没有size())。我的观点:我目前不知道容器的普遍接受定义。 -
也许您可以从 Boost Range Library 中完成的概念检查中学习 - 或者直接使用它们。
标签: c++ templates typetraits