Skip to content

P3348R4 C++26 should refer to C23 not C17 #8011

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jensmaurer
Copy link
Member

Avoid lone subclause [depr.ctime] in Annex D.

Fixes #7940.
Fixes cplusplus/papers#2020

Avoid lone subclause [depr.ctime] in Annex D.
@jensmaurer jensmaurer force-pushed the motions-2025-06-lwg-3 branch from b079059 to 73448ea Compare June 24, 2025 20:35
Comment on lines 13240 to +13241
#define @\libmacro{WEOF}@ @\seebelow@ // freestanding
#define @\libmacro{WCHAR_WIDTH}@ @\seebelow@ // freestanding
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
#define @\libmacro{WEOF}@ @\seebelow@ // freestanding
#define @\libmacro{WCHAR_WIDTH}@ @\seebelow@ // freestanding
#define @\libmacro{WCHAR_WIDTH}@ @\seebelow@ // freestanding
#define @\libmacro{WEOF}@ @\seebelow@ // freestanding

The paper wants a different order for these macros.

Copy link
Member

Choose a reason for hiding this comment

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

In [cstdint.syn] WCHAR_WIDTH comes immediately after WCHAR_MAX, because there's no WEOF in [cstdint.syn]. That's why I put it before WEOF here. It's not important though, certainly editorial.

@@ -11658,7 +11667,7 @@
\end{footnote}

\pnum
The functions \tcode{asctime}, \tcode{ctime}, \tcode{gmtime}, and
The functions \tcode{gmtime} and
\tcode{localtime} are not required to avoid data
races\iref{res.on.data.races}.

Copy link
Member

@Eisenwave Eisenwave Jul 11, 2025

Choose a reason for hiding this comment

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

Right below, there is a missing change (GitHub won't let me comment on that line):

-\xrefc{7.27}
+\xrefc{7.29}

Comment on lines +236 to +238
In addition to being available via inclusion of the \libheader{cfloat} header,
the macros \tcode{INFINITY} and \tcode{NAN} are
available when \libheaderref{cmath} is included.
Copy link
Member

Choose a reason for hiding this comment

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

Out of curiosity, why is it \libheader{cfloat} but \libheaderref{cmath}?

@@ -762,6 +777,21 @@
Equivalent to: \tcode{return visit(std::forward<Visitor>(vis), arg.value);}
\end{itemdescr}

\rSec1[depr.ctime]{Deprecated time formatting}
Copy link
Member

Choose a reason for hiding this comment

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

The paper titles this subclause

Header <ctime> synopsis

I assume the change is intentional?

Copy link
Member

Choose a reason for hiding this comment

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

No the paper has "D.? Deprecated [depr.ctime]" and then "D.?.? Header synopsis [depr.ctime.syn]". As noted in the commit msg, the D.?.? subclause has been dissolved, so there's only D.? here, so strictly speaking the paper titled it "Deprecated".

"Deprecated" is a terrible name (I think I meant to write something there and apparently forgot). And "Header synopsis" only made sense for an rSec2 title, not the rSec1 title. So this change seems necessary.


\indexlibraryglobal{realloc}%
\begin{itemdecl}
void* realloc(void* ptr, size_t size)
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
void* realloc(void* ptr, size_t size)
void* realloc(void* ptr, size_t size);

declares the additional \tcode{mbrtoc8} and \tcode{c8rtomb} functions
and does not declare types \keyword{char16_t} nor \keyword{char32_t}.
are the same as the C standard library header \libheader{uchar.h},
except that it does not declare types
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
except that it does not declare types
except that it does not declare the types

If you want to keep the "the" in [cwchar.syn] then should we add it here?

@@ -240,6 +240,18 @@
\tcode{trivially_relocatable_if_eligible} as macros is invalid
in this revision of \Cpp{}.

\rSec2[diff.cpp23.mem]{\ref{mem}: memory management library}
Copy link
Member

Choose a reason for hiding this comment

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

The paper has "Memory" with uppercase M but it seems that is wrong and it should indeed be lowercase. But "C.1.2 Clause 5: Lexical conventions" is wrong in the current WP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[2025-06 LWG Motion 3] P3348R4 C++26 should refer to C23 not C17 P3348 R3 C++26 should refer to C23 not C17
3 participants