I'm facing a strange behaviour using Intel C++ compiler 2019 update 5. When I fill a std::map
it seems to lead to a non deterministic (?) result. The stl is from VS2019 16.1.6 in which ICC is embedded. I am on Windows 10.0.17134.286.
My code:
#include
I simply wanted to perform a test so I call directly icl from the command line:
$ icl /nologo mycode.cpp $ mycode.exe 0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15, 16, 17
Curious. I expected to have 18 entries and I got 15 and 14 (depending on the insertion method, see the code).
$ icl /nologo /EHsc mycode.cpp $ mycode.exe 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15, 16, 17
Still curious, now I got 17 and 14 entries rather than 18 and 18!
$ icl /nologo /Od mycode.cpp $ mycode.exe 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
Now, with no optimization, I got 18/18, as expected.
My question is two-fold: 1) is it normal to get such results and 2) if it's not (what I suspect) what did I do wrong? I tought a simple call to the compiler would call the std::map::insert()
function correctly?
Does the problem lies in the for(){}
???
Thanks for helping me understanding this problem and finding a solution!