Closed solarispika closed 10 months ago
Hi! If there's a demand let's simply fix those issues since they seem to require minor fixes. I kind of assumed that no one would be using such an old GCC version so at some point I stopped being careful about it. But I understand that you need that compatibility, right? What's the minimum version you need to be supported?
To be honest, I don't have a strong need to use old compilers myself. I've just been fixing some bugs and will submit a PR later. During this work I noticed the LEGACY option when trying to use C++11 features.
If maintaining the LEGACY option is no longer a priority for the project, I'm happy to help remove it and do some cleanup in a pull request. Let me know if taking out that obsolete option would be helpful.
I don't have a stake in keeping legacy compatibility - just thought I'd raise the issue since the option wasn't working as expected. If the team decides supporting pre-C++11 is more trouble than it's worth, I can assist with removing LEGACY and modernizing the codebase.
Thanks for offering your collaboration. I'm trying to think for a good reason to maintain a pre C++11 version and I honestly don't find any, I remember doing that because there was a single user using an old NAS Linux installation that required support for an old GCC version and old Linux version but it was really long ago. If you want to remove the legacy option please feel free to do it. Thank you very much!
The use of double angle brackets (>>) for nested templates in commit 1deac78f8c5cff6921db2ac9ac7ab8b34db6371f prevents the project from building with C++ standards earlier than C++11 when the
LEGACY
CMake option is used.Additionally, commit 2c29a328d78548cf8443c96652caaa966840fada introduced clang-format with a default C++11 standard, which also formats double angle brackets into the C++11 style.
Together, these changes break existing builds that rely on
LEGACY
to maintain pre-C++11 compatibility. TheLEGACY
option is currently misleading, as specifying it no longer allows building with pre-C++11 compilers or--std=c++03
.We should decide whether to continue supporting pre-C++11 standards by:
typename
instead, allowing nested templates to work in C++03Standard: c++03
in .clang-format to enforce pre-C++11 compatibilityOr only support C++11 and later standards moving forward.
The latter would simplify the codebase, but permanently break
LEGACY
builds that need pre-C++11 compatibility. We should weigh the tradeoffs and decide on the best path forward.Please share your thoughts on how we should handle the
LEGACY
build breakage introduced by the nested template syntax change. I'm happy to update the issue description once we align on an approach.