That's a cool proposal, I knew they were talking about that sort of thing, but the implementation is certainly non-trivial. I'll be excited to see it added. That said, it still does not provide proof of your assertions. In fact quite the opposite:
Quote
There are two common uses of enumerations. First, enum expresses an enumeration that stores exactly one of the enumerators.
...
Second, flag_enum expresses an enumeration that stores values corresponding to bitwise-or’d enumerators.
Even he acknowledges that there is more than one use for an enum. He is showing examples of how meta classes can provide specialized versions of generalized constructs that already exist in C++. But read even further and he links to page 22 on https://accu.org/var/uploads/journals/Overload132.pdf which, as luck would have it, has an entire article called "Using enum classes as bitfields".
Now I would normally leave this here, assume you and the others will read the note and the article without bias. But since you've linked yet another article that does not actually prove what you claim it does (ie. it feels like you've been negligent if not intentionally misleading), I feel I must explain what the 'note' and the SFINAE bit in the paper you linked, and the Overload article are referring to. Neither the note, nor the article, raise any issue as far as safety, usability, or performance of using flags as enums; rather both the proposal and the article admit that writing the appropriate overload operators is easy, but that it does amount to some boilerplate code repetition:
Quote
The implementation of these operators is trivial, so it is easy to create your own bitmask types, but having to actually define the operators for each bitmask type is undesirable
The proposal suggests that using metaclasses as a solution (which would make sense in a proposal for metaclasses), the Overload article suggests using SFINAE and a policy class, and I suggested a macro. All 3 solutions work, pick the one you like the best. It doesn't matter to the user of the enum, only the author. I personally can't wait for metaclasses and would prefer that method over macros.
Currently enums do all that you ask for already: "The generated values are constexpr. It respects type safety, prevents mixing with other types including integers, and all the rest.". The new meta classes will be a great addition because it will remove the need for some boilerplate code, but it won't add any features that don't already exist.
I don't understand why there is such a reluctance to at least try this out. I have shown repeatedly in the standard where it is safe, and well defined. I have shown examples, I (and you as well inadvertently) have linked to examples in prominent C++ articles. It is common, often used, and accepted in practice (you'll find it in many large public code bases including the C++ standard library and boost). It satisfies ALL the constraints that have been listed here as desirable, safe: easy to use, high performance/low overhead. Its trivial to implement.
I am flabbergasted by the level of negativity and bullying in this thread. It seems that every time someone disagree's with the 'clique' irregardless of the accuracy/legitimacy of the post, you guys circle the wagons and try to bully them. I backed every assertion I made with evidence from the standard, while repeatedly people made assertions that were completely untrue (according to the standard). If the situation had been reversed I'd have been ridiculed and eventually banned from the forums if I kept pressing the point, for what you guys wrote. I certainly wouldn't get 'upvoted' for posting things that are factually wrong (now before its said, I don't care about the reputation, but I do care about the attitudes in these forums, or at least I did before this thread). Rather than have a real and honest discussion as professionals, what we have here is nothing more than high-school level pettiness. Posting articles that you know are inaccurate in an attempt to 'prove' yourself right? Quotes taken out of context. Misleading assertions. This was not an 'error' or an 'accident', and nothing you wrote was in 'good faith'. C++ is a massive language, so there's no doubt people will make errors from time to time, heck I even saw SiCrane make an error once (and that guy was a genius when it came to knowing the standard), and I certainly wouldn't hold it against anyone for making an honest error. But these were not 'honest errors'. They were not mistakes, they were intention misuses; you knew enough to know it was wrong, and still posted it in an attempt to deceive...
And to what end? To not say 'hey I never knew that, maybe I'll try that out?'. Like somehow admitting you don't know every little thing about C++ (hint, neither does Bjarne, and he'll be the first to say so) is bad? Delete this post, lock it, censor it, delete my account, I don't care anymore. I will not be a bully. I will not engage in your silly clique. I will not stop attempting to learn and better myself, I will not stop questioning or scrutinizing. You've made it clear time and time again that discussions are not wanted in these forums, that disagree'ing with any of the moderators like Hodgman or Frob is tantamount to blasphemy, and that these forums are nothing more than an industry insider circle-jerk; and I refuse to be part of this toxic environment.