C ++ 11在data()
上实现了std::vector
成员函数,它为您提供了一个指向内存数组的指针。这是否意味着模板专业化std::vector<bool>
也有此成员?由于此专业化不会以bool *
的形式存储数据,因此您可以通过调用data()
来实现哪种行为?
答案 0 :(得分:28)
除非您的实现具有非标准扩展,否则它将无法编译。 C ++ 11 23.3.7 / 1中指定的std::vector<bool>
的特化不会声明data
成员。
答案 1 :(得分:24)
此page明确表示该类,表明该专业化不提供此方法。
特殊化与非特殊化向量具有相同的成员函数,除了data,emplace和emplace_back,这些特殊化中不存在。
此other page以及C++ specifications的§23.3.7确实证实了这一点。
答案 2 :(得分:3)
答案 3 :(得分:1)
好吧,没有std::vector<bool>::data
,所以你可以期待的是编译错误。