Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions source/basic.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5521,15 +5521,15 @@
\indextext{\idxcode{char8_t}|see{type, \tcode{char8_t}}}%
\indextext{type!\idxcode{char8_t}}%
\indextext{type!underlying!\idxcode{char8_t}}%
Type \keyword{char8_t} denotes a distinct type
Type \keyword{char8_t} is a distinct type
whose underlying type is \tcode{\keyword{unsigned} \keyword{char}}.
\indextext{\idxcode{char16_t}|see{type, \tcode{char16_t}}}%
\indextext{\idxcode{char32_t}|see{type, \tcode{char32_t}}}%
\indextext{type!\idxcode{char16_t}}%
\indextext{type!\idxcode{char32_t}}%
\indextext{type!underlying!\idxcode{char16_t}}%
\indextext{type!underlying!\idxcode{char32_t}}%
Types \keyword{char16_t} and \keyword{char32_t} denote distinct types
Types \keyword{char16_t} and \keyword{char32_t} are distinct types
whose underlying types are \tcode{std::uint_least16_t} and \tcode{std::uint_least32_t},
respectively, in \libheaderref{cstdint}.

Expand Down Expand Up @@ -5656,13 +5656,14 @@
\end{note}

\pnum
The types denoted by \cv~\tcode{std::nullptr_t} are distinct types.
Type \tcode{std::nullptr_t} is a distinct type.
A prvalue of type \tcode{std::nullptr_t} is a null pointer
constant\iref{conv.ptr}. Such values participate in the pointer and the
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence I'm modifying here was added by CWG2689 "Are cv-qualified std::nullptr_t fundamental types?" in 2024.

Incidentally, I wonder whether the previous emphasis on cv nullptr_t was supposed to imply something here: that maybe prvalues of type, say, volatile nullptr_t are not null pointer constants? Would that be detectable in any way?

I think it might be impossible to form a prvalue of type const nullptr_t or volatile nullptr_t, though. Certainly one can't do it via [conv.lval]: "A glvalue of a non-function, non-array type T can be converted to a prvalue. [...] If T is a non-class type, the type of the prvalue is the cv-unqualified version of T. [...] If T is cv std::nullptr_t, the result is a null pointer constant."

pointer-to-member conversions\iref{conv.ptr,conv.mem}.
\tcode{\keyword{sizeof}(std::nullptr_t)} shall be equal to \tcode{\keyword{sizeof}(\keyword{void}*)}.

\pnum
Type \tcode{std::meta::info} is a distinct type.
A value of type \tcode{std::meta::info} is called a \defn{reflection}.
There exists a unique \defnadj{null}{reflection};
every other reflection is a representation of
Expand Down