Visual Studio C++11 support does not allow unrestricted unions, so move the string form outside the union.
Visual Studio does not support C99, so implement snprintf emulation for it.
Fix Visual Studio build error C3493: 'MIN_COST' cannot be implicitly captured because no default capture mode has been specified.
Avoid the use of C99 variable length arrays, which is not supported by Visual Studio.
Fix Visual Studio build warning C4099: 'Ref' : type name first seen using 'class' now seen using 'struct'
Remove default value of a lambda parameter which Visual Studio does not accept (Section 5.1.2 paragraph 5: Default arguments (8.3.6) shall not be specified in the parameter-declaration-clause of a lambda-declarator)
Remove uses of unrestricted unions when building with MSVC.
Add missing include header for std::max.
Remove the use of ISO 646 'ism which Visual Studio does not support.
Clean up build warnings C4018 signed/unsigned mismatch in '<'.
Add CMakeLists.txt for building native optimizer.
Pass proper C++11 build flags to native optimizer CMake script.
Clean up Visual Studio build warnings in native optimizer CMakeLists.txt.
Remove unreferenced local variable in optimizer.cpp.
Clean up warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning).
Retain IString str; inside the anonymous union in struct Value on non-MSVC compilers.
Document how to build native optimizer with CMake in embuilder.py.
Merge pull request #3087 from juj/vs_native_optimizer_fixes

Vs native optimizer fixes