std::vector<bool>::reference 如何分配给 c++ 中的 bool 类型?

How is std::vector<bool>::reference assigned to bool type in c++?

我知道 std::vector<bool>::reference 是一个代理 class 对用户来说并不明显。

赋值给bool类型时隐式转换为bool

怎么可能? std::vector<bool>::reference 类型与 bool 类型相去甚远。

是否有一些编译器在幕后工作?

下面是代码示例

...
    std::vector<bool> v = { true, true, false, false, false };
    std::vector<bool>::reference vr =  v[1];
    bool b = vr; // How is it possible ?
    std::cout << b << std::endl;
...

std::vector<bool>::reference 定义 operator bool 以允许隐式转换为 bool.