I just spent the last hour tracking down a stupid C++ bug with a friend. The problem was that I had a “#define E 2.71”, and Boost also uses the letter “E” somewhere, obviously. Since the preprocessor just blindly replaces all instances of “E”, it was getting replaced everywhere. This was giving insane amounts of errors, none of which were related to the problem.
Anyway, just a small PSA: never “#define E”.