On Tue, 29 Dec 2020 at 23:50, Yuriy Skalko <yuriy.ska...@gmail.com> wrote:
> > I just tried to recompile LyX on MSVC 19, this is the error I get: > > > > > > [ 40%] Building CXX object > > src/frontends/qt/CMakeFiles/frontend_qt.dir/GuiApplication.cpp.obj > > GuiApplication.cpp > > D:\LyX\lyx-unstable\3rdparty\nod\nod.hpp(272): error C2653: 'result_of': > is > > not a class or namespace name > > D:\LyX\lyx-unstable\3rdparty\nod\nod.hpp(323): note: see reference to > class > > template instantiation 'nod::signal_accumulator<S,T,F,A...>' being > compiled > > D:\LyX\lyx-unstable\3rdparty\nod\nod.hpp(272): error C2146: syntax error: > > missing ';' before identifier 'type' > > D:\LyX\lyx-unstable\3rdparty\nod\nod.hpp(272): error C4430: missing type > > specifier - int assumed. Note: C++ does not support default-int > > > > It looks like it's due to bda45704005d6b328e18457a07d05e56883c2874, with > > the replacement of boost::signals2 (a heavy library) by nod (an > > unmaintained library). It's about things that are getting deleted in the > > latest versions of C++, meaning that it will probably bite other > compilers > > at some point in the future. > > > > As the author of the library did not answer to PRs in the last two years, > > I'm not sure it's possible to upstream changes to it… What would be best > in > > this case? > > I assume that you are compiling LyX in C++20 mode since `result_of` is > only deprecated in C++17. Does the attached patch resolves this issue? > (It is strange, but seems like result_of still exists in C++20 mode of > GCC...) > > The nod library is pretty small and I suppose the only maintenance will > be due to backward incompatibilities of newer C++ standards. > I did not specify anything in particular, I let CMake deal with the details, actually. Forcing the C++20 mode did not work, with a set(CMAKE_CXX_STANDARD 20) in the CMakeFile. Unfortunately, your patch did not work, neither the corresponding code from Abseil ( https://github.com/abseil/abseil-cpp/commit/e19260fd7dbef881492fd73891e0be5bd4a09b95 ). Based on https://github.com/ReactiveX/RxCpp/issues/530, I tried with the _HAS_CXX17 macro, and it worked. I'm attaching the relevant patch, but I'm not sure it will work on other compilers.
msvc.patch
Description: Binary data
-- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel