Skip to content
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

Missing index entries for definitions of the terms "satisfies" and "models" #3523

Open
Quuxplusone opened this issue Dec 6, 2019 · 3 comments
Assignees
Labels
lwg Issue must be reviewed by LWG.

Comments

@Quuxplusone
Copy link
Contributor

The draft repeatedly uses the terms of art "satisfies/satisfy" and "models/model" without pointing to their definitions, which would be fine, except that these terms of art also do not appear in the Index!

It's hard to search for "model" in the full text because of "memory model" and "object model", but I have at least tracked it down to a non-normative example http://eel.is/c++draft/concepts.equality#8

T fails to meet the implicit requirements of C, so T satisfies but does not model C. Since implementations are not required to validate the syntax of implicit requirements, it is unspecified whether an implementation diagnoses as ill-formed a program that requires C<T>.

http://eel.is/c++draft/temp.constr.atomic#3 seems to provide a normative definition for satisfy.

To determine if an atomic constraint is satisfied, the parameter mapping and template arguments are first substituted into its expression. If substitution results in an invalid type or expression, the constraint is not satisfied. Otherwise, the lvalue-to-rvalue conversion is performed if necessary, and E shall be a constant expression of type bool. The constraint is satisfied if and only if evaluation of E results in true.

I have not discovered the normative definition for model.

@jensmaurer
Copy link
Member

jensmaurer commented Dec 6, 2019

"satisfies" is fine and covered by the core language. It seems that "models" is only defined with specific concepts. We frequently say "a type T models C only if ...". I could not find a generic definition of "models" in the library front matter (where it would belong).

@jensmaurer jensmaurer added the decision-required A decision of the editorial group (or the Project Editor) is required. label Dec 6, 2019
@jwakely
Copy link
Member

jwakely commented Dec 6, 2019

Right, we only use "models" in the context of specific concepts, and the definition of each concept says what it means to model that concept.

@CaseyCarter is already on the hook to write a paper clarifying these terms, to resolve some open LWG issues and NB comments.

@jensmaurer jensmaurer added the lwg Issue must be reviewed by LWG. label Dec 6, 2019
@CaseyCarter
Copy link
Contributor

Right, we only use "models" in the context of specific concepts, and the definition of each concept says what it means to model that concept.

@CaseyCarter is already on the hook to write a paper clarifying these terms, to resolve some open LWG issues and NB comments.

Yes, feel free to assign (the remainder not covered by Jens's PR) this issue to me.

@jensmaurer jensmaurer removed the decision-required A decision of the editorial group (or the Project Editor) is required. label Dec 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lwg Issue must be reviewed by LWG.
Projects
None yet
Development

No branches or pull requests

4 participants