#include <vector> #include <algorithm> int main() { int a; std::vector<std::vector<int>> v; std::vector<std::vector<int>>::const_iterator it = std::find(v.begin(), v.end(), a); }
assaults you with 42 errors, C++ templates are a joy 😊
But like…what’s the real bug?
Uninitalized memory (
int a;
with no assignment) vector of int vectors (IE a dynamicint[][]
) and attempting to finda
, anint
in the vector of vectors of int IEint
instead ofvector<int>
. I think the iterator type is correct but I’m not sure off the top of my head
And the only thing wrong was a missing bracket.
Maybe one of his colleagues is to blame for this:
https://stackoverflow.com/questions/26965331/javascript-prank-joke#26965332
I find it commendable that you wrote code so horrible other libraries started throwing more errors wondering what the hell you were doing.
Well don’t write 600 lines of code without hitting compile then! You’re not writing an essay that has to be handed in once.
The only time I ever “write” more than a few 10s of lines at a time (dev since the 1970s, pro since 1991) is when I’m scaffolding a new application with a code generator, and that usually compiles first time. And source control is revolutionary. Check in stuff that works, then no matter how bad things get you can always just roll back to the last good commit. Unpicking the last few hours without source control is horrible. Been there, done that way too many times.
And even when you do get 700 errors just look at the first few. The rest are most likely junk caused by the compiler not being able to resynchronise with the remainder of the code.
I once did a project regex search heavy refactor, clicked compile once and made it without a code error. I had several collegues be amazed when I compile and it works on the first shot 😅
Also, if you develop on a Mac, slow disk sync on their modern OSes not picking up the change. Or if you use Docker, it caching a layer that it shouldn’t. The future has weird new problems sometimes.
Protip: Don’t write 600 lines of code without ever testing it at all. And by testing I mean anything, manual testing included or even just compiling it or running a linter over it. Do things incrementally and verify things at each step to make sure you are not drifting off course by some faulty assumption you made near the start.