基于范围的for循环:为什么使用vector <int>而不使用vector <bool>编译?

时间:2018-09-20 01:24:52

标签: c++ c++11

我看到一种情况,矢量元素的类型从int更改为bool,导致代码停止编译。我想念什么?

此代码可以正常编译:

#include <vector>

int main()
{
    std::vector<int> v(10);
    for (auto& e : v)   e = 1;
}

在编写此代码时,编译器(VC ++ 2017)抱怨常量不匹配:

#include <vector>

int main()
{
    std::vector<bool> v(10);
    for (auto& e : v)   e = true;
}

我意识到切换到auto&&可以解决此问题,但是我很乐意为您解释为什么。

0 个答案:

没有答案