std::vector reference error C2440
-
Hi there,
I'm using Qt 5.9.7 with Visual Studio 2017 64bit compiler or alternative Visual Studio 2017 with Qt Viusal Studio Tools 2.2.2 programming Windows desktop application.
I got a problem in Qt using vector references.
The code below runs fine as pure Visual Studio 2017 C++ console application.
But the same code gives the C2440 error message if it is compiled in Qt Creator as C++ console application (without QT), as Qt console application or as simple QWidget application. The same happens if the code is compiled in Visual Studio as Qt application.
// #include <iostream> #include <vector> int main() { std::vector<int> vec { 0,1,2,3 }; for (auto& v = vec.begin(); v != vec.end(); v++) { } return 0; }
The error message is:
error C2440: "Initialisation": "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>" can't be converted to "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>> &"And in the code the first "vec" in the loop is marked red.
Without using reference the code runs fine on all platforms.
But I want to use reference because the code is in a performance critical part of my application.So why does the code run fine as Visual Studio C++ console application and doesn't compile in Qt? What's wrong?
Regards,
mireiner -
Sorry I mainly used ranged based loops and not very often iterators. So let me ask again to make sure:
You mean: Reference can't be used here?
Is there any way to use iterators with reference at all? How does the code look like then?