-
Type: Bug
-
Resolution: Cannot Reproduce
-
Priority: 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