“Models” subsumes “satisfies” (Wording for US298 and US300)

Document #: P2101R0
Date: 2020-02-11
Project: Programming Language C++
LWG
Reply-to: Tim Song
<>
Casey Carter
<>

1 Introduction

This paper provides wording to resolve NB comments US298 and US300. It also resolves [LWG3345].

2 Wording

This wording is relative to [N4849].

Add the following paragraphs to 16.5.4.12 [res.on.requirements] before p1:

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 References

[LWG3345] Daniel Krügler. Incorrect usages of “models” versus “satisfies”.
https://wg21.link/lwg3345

[N4849] Richard Smith. 2020. Working Draft, Standard for Programming Language C++.
https://wg21.link/n4849