【发布时间】:2019-12-13 17:41:14
【问题描述】:
代码如下:
int main()
{
std::vector<bool> b(5,false);
auto b0=b[0];
cout<<b0;
b[0]=true;
cout<<b0;
std::vector<int> i(5,false);
auto i0=i[0];
cout<<i0;
i[0]=true;
cout<<i0;
return 0;
}
0100
变量 b0 是引用类型 (std::_Bit_reference) 而 i0 是普通 int。告诉 auto 推断一些非引用类型(例如 bool)的正确语法是什么?
【问题讨论】:
-
我不认为你能做到这一点,因为
auto的具体意思是“拿起任何类型的东西”,而vector<bool>是一个奇怪的东西。但也许我错了? -
也许 operator+ 工具可以在这里提供帮助?真正的解决方案是避免
vector<bool>。试试vector<Bool>和enum class Bool { False, True };。