标准 vector.data return 无效

std vector.data return void

我需要你的帮助来解决我无法理解的非常奇怪的行为。

我写了一个vector.data的简单用法:

    void* ptr = NULL; // really initialized somewhere else
    bool* boolPtr = NULL;
    boolPtr = ((std::vector<bool>*)ptr)->data();

当我编译时(使用 -std=c++17)我得到了错误

void value not ignored as it ought to be

我尝试了很多东西,但似乎每次我从一个转换向量(来自 void*)调用 data() 方法 return 一个 void 而不是 bool*。

我错过了什么?

vector<bool> 不是正确的向量。听起来很奇怪,但事实就是如此。它不能为您提供指向其内部 bool 数组的指针,因为它没有一个,因为它存储打包成单个位的值。