Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-38098

MongoDB's yaml-cpp is rejected by latest MSVC

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.4.22, 4.0.5
    • Affects Version/s: None
    • Component/s: None
    • None
    • Environment:
    • Fully Compatible
    • Dev Tools 2018-11-19

      The Microsoft Visual C++ team regularly builds MongoDB (and many other open source projects) so we can avoid introducing compiler and standard library bugs. Our build recently broke, due to MongoDB's use of yaml-cpp. Updating yaml-cpp to its latest master commit will fix the problem.

      The full chain of events was:

      • yaml-cpp used a non-Standard macro `_NOEXCEPT` defined by the MSVC implementation.
      • MSVC removed the `_NOEXCEPT` macro in VS 2017 15.8 (released for production on Aug 14, 2018).
      • yaml-cpp fixed their usage of this macro on June 30, 2018: https://github.com/jbeder/yaml-cpp/commit/0f9a586ca1dc29c2ecb8dd715a315b93e3f40f79
      • However, yaml-cpp 0.6.2 (predating this fix) is still the latest version.
      • Compiling MongoDB with VS 2017 15.8 or later emits compiler errors of the form "D:\MongoDB\src\src\third_party\yaml-cpp-0.6.2\include\yaml-cpp/exceptions.h(123): error C3646: '_NOEXCEPT': unknown override specifier".

            henrik.edin@mongodb.com Henrik Edin
            STL_MSFT Stephan T. Lavavej [X]
            0 Vote for this issue
            9 Start watching this issue