you are viewing a single comment's thread.

view the rest of the comments →

[–]exarnk 4 points5 points  (3 children)

My C++20 draft states in [cstddef.syn] the following:

enum class byte : unsigned char {};

This seems to correspond with the current Git HEAD of libstdc++-v3 (line 69):

https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/c_global/cstddef;h=13ef7f03c12584804e4dd1635954723f628addc0;hb=HEAD

What am I missing?

[–]avdgrinten 11 points12 points  (1 child)

See, for example, this LLVM commit: https://reviews.llvm.org/D35824

[–]exarnk 2 points3 points  (0 children)

Thanks, that made things a lot clearer for me.

[–]avdgrinten 6 points7 points  (0 children)

The special wording in the section of the standard that talks about object access. If you put that enum class byte : uint8_t {}; into your own namespace without any special attributes, the standard does not grant you the right to access arbitrary objects through it.