Skip to content

[res.on.requirements] Not sufficiently clear on transitiveness and disjunctions LWG 3429 #3912

Open
@JohelEGP

Description

@JohelEGP

-1- A sequence Args of template arguments is said to model a concept C if Args satisfies C (13.5.2 [temp.constr.decl]) and meets all semantic requirements (if any) given in the specification of C.
-2- If the validity or meaning of a program depends on whether a sequence of template arguments models a concept, and the concept is satisfied but not modeled, the program is ill-formed, no diagnostic required.
-3- If the semantic requirements of a declaration's constraints ([structure.requirements]) are not modeled at the point of use, the program is ill-formed, no diagnostic required.

With this wording:

  • Does random_access_range<span<int>> impose any semantic requirement at all? Because its specification is only code.
  • How about viewable_range<span<int>>? Is it clear that we're only requiring transitively modeling concepts only in the first part of the disjunction which evaluates to true (so borrowed_range and not view)?
  • Is it clear that viewable_range<drop_view<span<int>>> does it the other way around?

Metadata

Metadata

Assignees

No one assigned

    Labels

    lwgIssue must be reviewed by LWG.not-editorialIssue is not deemed editorial; the editorial issue is kept open for tracking.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions