-
-
Notifications
You must be signed in to change notification settings - Fork 103
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
chore(core): update core to C++17 #11340
Conversation
User Test ResultsTest specification and instructions User tests are not required Test Artifacts
|
14efc0e
to
3a3a802
Compare
- use utfcodec.hpp's convert<>() instead of codecvt Fixes: #8800
3a3a802
to
02413c0
Compare
- Update from https://github.com/nlohmann/json/releases/tag/v3.11.3 - Needed for C++17 Fixes: #8800
Good. |
Cascade of build issues with C++17 changes sadly -- Windows, Developer both failing to build, alongside Core:Windows. Might need to update VC++ project setting for C++ version for various projects. |
@mcdurdin doesn't repro locally 😢 Build server has:
My system has: https://learn.microsoft.com/en-us/cpp/overview/compiler-versions?view=msvc-170 says that these numbers indicate VS2019 versions 16.8-16.9 (failing) versus 16.10-16.11 (passing) EDIT Well actually.. repro's locally in x86 but not x64 🤦 |
@mcdurdin summary: works in x64, fails in x86. The project settings are updated properly. From long and .. painful experience, sounds like a compiler bug. Trying VS2022.. |
We could consider eliminating json from C++ code altogether -- as far as I can remember, it's only debug info anyway. |
it's used for writing debug info and for reading the test data for the ldml runner. |
I upgraded to VS2022 (only as a test) and it got worse - now x64 breaks too 🤦 if i upgrade to VS2024 it will make Mac stop working too (kidding) seriously it seems like it's a known compiler issue on the json side. |
Perhaps a Path Forward is to keep the codecvt stuff out, but build for C++11 for now – maybe have one builder 'try' c++17 on linux to keep it working? |
Any ref to the known issue? Is there a #define you can use to block certain behaviours of the json lib? I haven't dug in deep but I have seen some examples |
- remove some tangled templates in jsonpp - remove one unneeded include of sstream, and rewrite another as a string conversion. Fixes: #8800
@mcdurdin wow, the issue was not in it had some fancy templating to handle 'any' kind of string, but it ended up trying to instantiate a |
|
||
template<typename C> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think the C
here matched far too widely. ANd some of the matches "crashed" with a static assert.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Changes in this pull request will be available for download in Keyman version 18.0.35-alpha |
Fixes: #8800
std::codecvt
is now deprecated. Switch toICU4Cutfcodec.hpp@keymanapp-test-bot skip