https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116178
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to antto from comment #5) > so maybe some kind of a rule could be made, for example: > "if stable (the default -std) has gotten "old", and the current date has > advanced several C++ versions forward, then: unstable would be the one that > is not newer than the date" > ...which for today could mean -std=c++unstable == -std=c++23 > and experimental could just be the very very newest even if it merely has a > temporary name (like "c++2b") Having *two* new options with unstable meaning sounds like it would just be confusing. > this is just IMO a handy alias/nickname for an actual language version, and > i don't think anyone should use it for very serious things, after all it is > going to be a moving target, it would depend on the gcc version, it's just a > lazy way to say "give me something new and dangerous" But what's the actual use case? Are you going to use C++23 features in your code? Then you need to enable -std=c++23 support, but you don't need -std=c++26 unless you're using those features. If you use -std=c++latest and it only gives you C++20, that's not useful for your code trying to use C++23 features. If you want to play with new features, there's a flag to enable them already. Does -std=c++whatever actually support some new use case that you can't do today? Or just "I can't be bothered to decide, give me something new"?