Skip to content
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

Consider switching to C++17 #148

Closed
meator opened this issue Sep 13, 2023 · 1 comment
Closed

Consider switching to C++17 #148

meator opened this issue Sep 13, 2023 · 1 comment
Assignees
Milestone

Comments

@meator
Copy link
Collaborator

meator commented Sep 13, 2023

C++17 (and C++14) has some reeealy nice features (std::string_view, try_emplace() - very useful in the current implementation of Applications.hh, std::optional, std::variant and more). Even C++20 could be considered but I don't have much experience with it.

@meator
Copy link
Collaborator Author

meator commented Oct 8, 2023

I didn't consider this issue to be significant, but switching to Catch2 v3 (#142) requires C++14. This means that C++11 will have to be given up in some way anyways. One solution would be to still treat the code as C++11 but compile it with C++14. But I don't consider this a good solution. Why throw out C++14's capabilities when we (must) have them?

Another solution would be to upgrade to Catch2 instead of Catch2 v3. Catch2 is no longer supported. Upgrading from deprecated Catch to deprecated Catch doesn't make sense. The v3 version also contains some improvements briefly mentioned in #142.

Since a switch is necessary, why stop at C++14? Nowadays pretty much every compiler supports C++14 and C++17. C++17 would bring improvements described in the first comment which increase performance and decrease complexity of Applications.hh. C++11 is old and is lacking several features. I don't see any major reasons to keep holding on it.

I will switch j4-dmenu-desktop to C++17 and modify code to use its features. If any compatibility issues (for example if a popular j4-dmenu-desktop package uses a compiler which doesn't support C++17 to compile the package which I find unlikely) should arise, I am willing to make some workarounds or revert this switch alltogether.

@meator meator self-assigned this Oct 8, 2023
@meator meator added this to the r3.0 milestone Oct 8, 2023
@meator meator closed this as completed in 771764c Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant