-
Notifications
You must be signed in to change notification settings - Fork 812
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Additional Information Regarding VS2017 C++17 vs WinMerge #48
Comments
Thank you for the information. Patches to upgrade boost, poco etc are welcome. |
My comments regarding the use of C++17 were overly negative. The 618 "new" errors (while compiling the Merge project) are because C++17 is flagging as deprecated (with warning, elevated to an error) various existing features that will be deleted in some future C++ standard (possibly C++20); they are still valid in C++17. Simply adding The remaining 11 errors that cannot be silenced (eight in None of these changes impact VS2015; the patches to |
I have done more study into the GoogleTest framework vs C++17 issue. As mentioned above, there are two general categories of errors ...
There are simple solutions to both ...
I have simple patches that accomplish both of these solutions, allowing the UnitTests project and the Test configuration of the Merge project to both compile using the C++17 language specification. I will be submitting a Pull Request shortly. I recommend that this issue can now be closed. |
Thank You !!
Sent from Mail for Windows 10
From: Takashi Sawanaka
Sent: Wednesday, December 27, 2017 12:20
To: sdottaka/winmerge-v2
Cc: Bill Gord; Author
Subject: Re: [sdottaka/winmerge-v2] Additional Information Regarding VS2017C++17 vs WinMerge (#48)
Closed #48.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Thank You for merging my Pull Request #47. I fear that it is just the first crack in a "Pandora's Box" situation.
I have just today discovered this note (https://blogs.msdn.microsoft.com/vcblog/2017/12/08/c17-feature-removals-and-deprecations/ dated 8 December 2017) on MSDN's Visual C++ Team Blog.
It explains in much greater detail how VS2017 (and beyond) will be approaching the C++14 and C++17 standards, especially the features that have been and will be deprecated. Pay particular attention to comments regarding
std:tr1
, which is the issue addressed in PR #47; note that this is really a GoogleTest framework problem which that project will have to solve.As mentioned in PR #47, I was not able to eliminate the problem by changing the language setting to C++14. I now see that, beginning with VS2017 version 15.5, the new deprecation warning is forced to be an new error by C++14 (the default language), in preparation for the eventual elimination of the
std:tr1
feature in C++17.So today I made a quick test: I explicitly set the "C++ Language Standard" property to C++17 for our UnitTests project. Alas .... there are now 1608 new compile errors. Most, but not all, are in the GoogleTest framework. Many, perhaps half, can be silenced by defining one (or more) of the new
_SILENCE_CXX17_xxx
symbols. Most of the remaining errors directly relate to the fact that indeed C++17 no longer supports thestd::tr1
construct (which the GoogleTest framework uses extensively). But there remains five new errors, all incregexp_poco.cpp
that all relate to the C++17 elimination ofstd::auto_ptr
So I decided to make another quick test. I set the language for the Merge project to C++17. Alas ... there are now 618 new errors! Most can be silenced by defining one or more of the
_SILENCE_CXX17_xxx
symbols (as with UnitTests); these new silence-able errors are all in the boost library!! There remain 11 errors that cannot be silenced: eight incregexp_poco.cpp
and three inMergeDoc.cpp
.So ... all of this leaves me with a number of thoughts ...
WinMerge has no immediate need to have the "C++ Language Standard" property set to C++17. It should be left at the VS2017 15.5 default, or be explicitly set to VS++14. And all will continue to compile correctly until some time in the future when C++17 is forced upon us (or a future C++14 adds more deprecation errors).
Now that these "future" C++17 problems have been detected, we should have a plan, even if informal and vague, on how we want to handle this.
MergeDoc.cpp
should be straightforward and easy to fix. (I will attempt to fix.)cregexp_poco.cpp
should be straightforward and easy to fix. This would add a local changes to the poco software; I'm not aware of any previous significant local changes. It may be that poco has already solved this particular problem; if so we should adopt their code. (I will look into this and/or attempt to fix it directly.)(_MSC_VER > 1912)
kludge (at least I hope nothing of significance). Since boost is an active development project, we should wait until they make the appropriate changes.Thank you all for your attention.
I would appreciate comments and feedback!
The text was updated successfully, but these errors were encountered: