【问题标题】:Implementation of std::list<bool>std::list<bool> 的实现
【发布时间】:2016-12-08 15:22:10
【问题描述】:

std::list&lt;bool&gt; 是否有类似 std::vector&lt;bool&gt; 这样的明确专业化?

std::vector&lt;bool&gt; 是唯一受此影响的 C++ 标准库容器吗?

我可以使用某种traits 来检测专业化吗?

【问题讨论】:

  • 不,std::list 没有专长。
  • 非常感谢。不过,请随意将其作为答案。
  • 另外,关于检测,类似的问题:stackoverflow.com/questions/16337610/…
  • 我很难想象std::list&lt;bool&gt;的用处
  • 我同意。如果不能在节点中获取数据的显式地址,很难看出如何构建链表。

标签: c++


【解决方案1】:

正如在标准中看到的那样,std::vector&lt;bool&gt; 有它自己的段落来说明它的实现。 std::list 拥有一个的要求不存在,但这并不意味着不允许实现拥有一个。据我所知,std::vector 是唯一需要对bool 进行专业化的容器。

【讨论】:

  • 谢谢你,我会赞成这个。但我想如果一个实现确实有一个,那么它必须遵守与没有专业化的完全相同的规则?
  • @XavierImbs 正确。
  • @XavierImbs 没错,但标准要求意味着std::list&lt;bool&gt; 的明确专业化可能没有用。标准要求隐含地不允许将多个位打包到一个字节中。这就是为什么std::vector&lt;bool&gt;的要求不同于其他std::vector&lt;T&gt;s的原因:它是专门允许这样的包装的。
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
相关资源
最近更新 更多