These changes disable a set of warnings for the MSVC compiler so that stricter warnings can be enabled with useful results.
The following warnings are being suppressed:
warning C4100: unreferenced formal parameter (263666 times)
warning C4127: conditional expression is constant (101120 times)
warning C4512: assignment operator could not be generated (40472 times)
warning C4505: unreferenced local function has been removed (6606 times)
warning C4610: [...] can never be instantiated (1714 times)
warning C4510: default constructor could not be generated (1714 times)
warning C4702: unreachable code (1343 times)
warning C4706: assignment within conditional expression (296 times)
warning C4245: signed/unsigned mismatch (962 times)
warning C4310: cast truncates constant value (216 times)
warning C4701: potentially uninitialized local variable (123 times)
warning C4703: potentially uninitialized local pointer variable (40 times)
warning C4389: signed/unsigned mismatch (28 times)
warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable (2 times)
We may choose to re-enable some of these at a later time, but it would involve more effort than I am prepared to make at this time.
I have made changes to fix the few instances of the following warnings that occur:
warning C4189: local variable is initialized but not referenced (6 times)
warning C4204: nonstandard extension used : non-constant aggregate initializer (4 times)
warning C4805: unsafe mix of type <X> and type <Y> in operation (2 times)
You mentioned this one fired ~200 times - this might actually be worth doing a small sample check to see what it's firing on. Perhaps these are things we should fix - unless they appear in dependent expressions in templates, in which case they're probably false positives.
The rest of these disables I'm totally fine with - if you want, please commit them separately/ahead of the rest of the review.