#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) ^
答案 0 :(得分:4)
您如何看待:
auto a{1};
是编译器吗?
如果你认为它应该是整数你就错了。编译器在确定事物是什么时很懒,它的initializer_list(就像你的错误所说的那样)并且std::initializer_list
没有定义==
运算符(就像你的编译器所说的那样)< / p>