Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++11 已经实现了data()成员函数 on std::vector,它给你一个指向内存数组的指针。这是否意味着模板专业化std::vector<bool>也有这个成员?由于此专业化不存储数据,bool *您可以从调用中获得什么样的行为data()?
data()
std::vector
std::vector<bool>
bool *
它不会编译,除非您的实现具有非标准扩展。的特化std::vector<bool>,如 C++11 23.3.7/1 中所指定,不声明data成员。
data
记录该类的此页面明确表明该专业化不提供此方法。
特化具有与非特化向量相同的成员函数,除了 data、emplace 和 emplace_back,它们不存在于本特化中。
这个其他页面以及C++ 规范的 §23.3.7确实证实了这一点。
没有。std::vector<bool>
不一定将其数据存储在单个连续的内存块中。
没有data()会员。
好吧,没有std::vector<bool>::data,所以你可以期待的是一个编译错误。
std::vector<bool>::data