比较两个自动变量

时间:2016-06-29 12:36:35

标签: c++11 initialization

#include <iostream>

using namespace std;

int main()
{
    auto a{1};
    auto b{1};
    if (a==b)
    {
        cout << "equal";
    }
    return 0;
}

为什么上述C ++代码在使用c ++ 11标准的g ++编译器中返回错误,而不是打印&#34;等于&#34;作为输出?

  

test.cpp:9:14:错误:'operator =='不匹配(操作数类型是'std :: initializer_list'和'std :: initializer_list')            if(a == b)                 ^

1 个答案:

答案 0 :(得分:4)

您如何看待:

auto a{1};

是编译器吗?

如果你认为它应该是整数你就错了。编译器在确定事物是什么时很懒,它的initializer_list(就像你的错误所说的那样)并且std::initializer_list没有定义==运算符(就像你的编译器所说的那样)< / p>