Skip to content

Daniel Krügler comments #3

@camio

Description

@camio
  1. Page 6: In the inserted text in [basic.def.odr] we find:

"by the specialization std::experimental::reflect::get_pointer
(21.12.4.10, 21.12.4.18)"

The two quoted references are incorrect compared to the accepted paper p0670r4:

a) 21.12.4.10 resolves to [reflect.ops.derived] but should be
[reflect.ops.value]
b) 21.12.4.18 resolves to [reflect.ops.memfct] but should be [reflect.ops.fct]

  1. Page 12, last sentence of the first paragraph of
    [dcl.type.reflexpr] ends with

"A meta-object type is an incomplete namespace-scope class type (12)."

the last quote of a Clause number instead of a sub-clause number is
normally written with a prefixing "Clause " as follows:

"A meta-object type is an incomplete namespace-scope class type (Clause 12)."

  1. Page 14, Table 12, last row,

a) column "identifier or simple-template-id kind": The entry ends with

"the name of a captured entity"

and thus misses the requested additional quote of
[expr.prim.lambda.capture] which should resolve to (8.4.5.2)

b) The separation between the two rows "the name of a function
parameter" and "the name of a captured entity
[expr.prim.lambda.capture]" is not as clear as in the other row
separations. Can this be improved?

  1. Separately from the task to review the changes I would like to note
    that on page 14 we have

"If the reflexpr-operand designates an entity or alias at block scope
(6.3.3) or function prototype scope (6.3.4)"

There does not exist a "function prototype scope" in 6.3.4 nor
elsewhere in the IS and 6.3.4 was not touched by the reflection
working paper. In 6.3.4 of the IS we have a "Function parameter
scope", though.

This is not a comment that should be considered as a problem of the
review, but I would like to have it tracked.

Axel: As David is the editor and this is clearly editorial I believe this
should be addressed?

David: It isn't immediately obvious how to fix this. I added a "requires NB comment" issue for this.

  1. Page 21, editorial question: Is it possible to use the same bullet
    number as in the IS for [temp.dep.type] p9, so that the first two
    quoted bullets before the insertion get the numberings (9.8) and
    (9.9), respectively ?

  2. Page 25, [reflect.synopsis], we have

"template concept Constant; // refines Scope and ScopeMember"

but that should be according to the accepted paper instead:

"template concept Constant; // refines Typed and ScopeMember"

  1. Page 33, [reflect.concepts.scope]:

I'd like to point out that the draft conflicts with the p0670r4
representation of the last sentence:

p0670r4: "[Note: Any such T that does not reflect the global namespace
also satisfies ScopeMember. — end note]"
draft: "Any such T that does not reflect the global namespace
also satisfies ScopeMember."

In p0670r4 it was presented as a note and this style mimics the
previous changes performed to make normative sentences to notes, but
in the draft it is not. On the other hand the most recent reflection
draft N4746 also shows it as normative sentence, so compared to that
reference the wording looks correct.

Axel: To clarify: the committee-accepted p0670r4 made this a note. The TS
draft does not reflect that change. The TS draft should be fixed.

Daniel: I'm fine with that view, but we should all agree before making that change.

Roger: I agree it should be a note, following P0670R4

This is not a showstopper, but I'd like to keep that tracked as a
remark or it should possibly be added to the reflection issue list
unless you can explain to me that the presentation in p0670r4 clearly
was an oversight.

  1. P. 35, [reflect.concepts.oper]: The first sentence ends with

"or a conversion function (cxxrefclass.conv.fct)."

and misses to resolve the sub-clause identifier "[class.conv.fct]"
which should be 15.3.2.

  1. Page 35, [reflect.ops]:

a) The first added new example is incomplete and misses the introductory line

"struct X {};"

b) The second added new example has a similar defect and also misses
the introductory line

"void func(int a);"

  1. Page 36, the last sentence following the paragraph after:

"template struct get_source_column;"

ends with:

"or typedef des3cribed by T."

the "3" seems to be spurious here and should be eliminated.

  1. Page 37, [reflect.ops.named], bullet (2.4.14), the sentence ends with:

"prefixed by the character ’ ’;"

note the missing ~, so it should end with:

"prefixed by the character '~';"

  1. Same sub-clause and page, but bullet (2.4.16) we find:

"the same characters as get_name_ve,"

There does not exist something like a "get_name_ve" template,
presumably that should be "get_name_v" instead. Before you make that
change, I'd like to point out that p0670r4 contains the same typo, so
strictly speaking the draft paper did correctly copy that typo. We
should either leave it as it is and inform the project editor or we
all agree that this is an obvious typo and fix it.

  1. P. 39, [reflect.ops.record],

a) bullet (2.2) is missing a closing parenthesis before the comma:

"for get_public_data_members (get_public_member_functions,"
=>
"for get_public_data_members (get_public_member_functions),"

b) Same problem in bullet (2.3):

"for get_accessible_data_members (get_accessible_member_functions,"
=>
"for get_accessible_data_members (get_accessible_member_functions),"

c) Also in bullet (2.3) last sentence before the [Example] is again a
spurious "3" mixed into the running text:

"(directly or indirec3tly)"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions