Date: Sun, 21 Jun 2026 12:32:35 +0800
Jens Maurer <jens.maurer_at_[hidden]> 於 2026年6月21日週日 上午2:55寫道:
>
>
> On 6/20/26 11:32, Hewill Kang via Std-Proposals wrote:
> > Hi all,
> >
> > After three years, I finally had the opportunity to finish this paper,
> and I am grateful for any feedback:
> >
> > https://isocpp.org/files/papers/D4281R0.html <
> https://isocpp.org/files/papers/D4281R0.html>
>
> I don't follow the second one of the two reasons given for requiring
> "typename": "Second, it ensures parser simplification."
>
> If we can get away without typename for alias-declarations, we sure can
> get away without typename in requires-expressions, too. Do you have actual
> compiler implementation experience to the contrary?
>
>
The description here is indeed somewhat vague.
My initial idea was that always requiring typename could be more
implementation-friendly, since it just adds `using identifier =` to the
original *type-requirement*, essentially:
*{using identifier =}opt *
*type-requirement*
while supporting optional typename might introduce unnecessary complexity
for implementation.
Is this reasonable?
> " If a type-requirement introduces an identifier, "
>
> We don't know whether this "introduces an identifier".
> The grammar has one, sure, but we don't know whether
> that identifier is "introduced". Maybe it's looked up.
>
> Why do we need the special text about "in scope" here?
> If we need special text about scope (I think we do),
> it should go into [basic.scope].
>
I must admit that my grasp of *core wording* is very inadequate as I'm bad
at the "language lawyer"-level.
I can only say that the proposed change here is unrigorous and indeed lacks
the CWG-aspect.
Perhaps I should seek help from CWG people like you, because this is my
first paper submitted for EWG...
Anyway, thanks for taking the time to review this paper for me!
Hewill
> Jens
>
>
>
> On 6/20/26 11:32, Hewill Kang via Std-Proposals wrote:
> > Hi all,
> >
> > After three years, I finally had the opportunity to finish this paper,
> and I am grateful for any feedback:
> >
> > https://isocpp.org/files/papers/D4281R0.html <
> https://isocpp.org/files/papers/D4281R0.html>
>
> I don't follow the second one of the two reasons given for requiring
> "typename": "Second, it ensures parser simplification."
>
> If we can get away without typename for alias-declarations, we sure can
> get away without typename in requires-expressions, too. Do you have actual
> compiler implementation experience to the contrary?
>
>
The description here is indeed somewhat vague.
My initial idea was that always requiring typename could be more
implementation-friendly, since it just adds `using identifier =` to the
original *type-requirement*, essentially:
*{using identifier =}opt *
*type-requirement*
while supporting optional typename might introduce unnecessary complexity
for implementation.
Is this reasonable?
> " If a type-requirement introduces an identifier, "
>
> We don't know whether this "introduces an identifier".
> The grammar has one, sure, but we don't know whether
> that identifier is "introduced". Maybe it's looked up.
>
> Why do we need the special text about "in scope" here?
> If we need special text about scope (I think we do),
> it should go into [basic.scope].
>
I must admit that my grasp of *core wording* is very inadequate as I'm bad
at the "language lawyer"-level.
I can only say that the proposed change here is unrigorous and indeed lacks
the CWG-aspect.
Perhaps I should seek help from CWG people like you, because this is my
first paper submitted for EWG...
Anyway, thanks for taking the time to review this paper for me!
Hewill
> Jens
>
Received on 2026-06-21 04:32:51
