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

MongoDB third_party\boost failed due to "error C2039: 'value': is not a member of 'boost::proto'" under /permissive- + MSVC

    • Type: Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Build
    • Labels:
      None
    • ALL
    • Dev Tools 2019-08-12, Dev Tools 2019-08-26

      Hi All,

      MongoDB third_party\boost failed due to "error C2039: 'value': is not a member of 'boost::proto'" under /permissive- mode when built on MSVC. Could you please help take a look at this? Thanks in advance!

      Related to Boost/proto PR: https://github.com/boostorg/proto/pull/2. Verified if removed the Boost workaround for MSVC, MongoDB can build successfully too.

      You can repro this issue as the steps below:
      1. git clone -c core.autocrlf=true https://github.com/mongodb/mongo D:\MongoDB\src
      2. open a VS 2017 x64 command prompt and browse to D:\MongoDB\src
      3. set CL=/permissive-
      4. pip.exe install --user -r .\etc\pip\dev-requirements.txt
      5. python.exe buildscripts/scons.py all -j4

      Error info:

      D:\MongoDB\src\src\third_party\boost-1.70.0\boost/proto/generate.hpp(239,20): error C2039: 'value': is not a member of 'boost::proto'
       proto::value(that.proto_expr_) = proto::value(e);
       ^
      D:\MongoDB\src\src\third_party\boost-1.70.0\boost/proto/generate.hpp(32): note: see declaration of 'boost::proto'
      namespace boost { namespace proto
      D:\MongoDB\src\src\third_party\boost-1.70.0\boost/proto/generate.hpp(239,20): note: This diagnostic occurred in the compiler generated function 'Extends<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<MemberClass::* >,boost::proto::argsns_::term<MemberClass::* >::arity>> boost::proto::pod_generator<Extends>::operator ()(const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<MemberClass::* >,boost::proto::argsns_::term<MemberClass::* >::arity> &) const'
       proto::value(that.proto_expr_) = proto::value(e);
       ^
      D:\MongoDB\src\src\third_party\boost-1.70.0\boost/proto/generate.hpp(252): note: see reference to class template instantiation 'boost::proto::pod_generator<Extends>' being compiled
       };
      C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include\chrono(670): note: see reference to class template instantiation 'std::chrono::duration<double,std::ratio<1,1>>' being compiled
       constexpr chrono::duration<double> _Ten_days_d\{_Ten_days};
      C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include\chrono(178): note: see reference to class template instantiation 'std::chrono::duration<__int64,std::nano>' being compiled
       using rep = typename _Duration::rep;
      C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include\chrono(648): note: see reference to class template instantiation 'std::chrono::time_point<std::chrono::steady_clock,std::chrono::steady_clock::duration>' bei
      

            Assignee:
            andrew.morrow@mongodb.com Andrew Morrow (Inactive)
            Reporter:
            QuellaZhang QuellaZhang [X]
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: