Title
Impenetrable definition of atomic constraint
Status
review
Section
13.5.2.3 [temp.constr.atomic]
Submitter
Brian Bi

Created on 2025-01-30.00:00:00 last changed 1 week ago

Messages

Date: 2026-03-26.12:33:59

CWG 2026-03-26

CWG has no consensus for the rephrasing above; the iterative nature of constructing parameter mappings is not sufficiently clear.

Date: 2026-03-26.11:31:45

Proposed resolution (reviewed by CWG 2026-03-26; no consensus):

Change in 13.5.2.3 [temp.constr.atomic] paragraph 1 as follows:

An atomic constraint is formed from an expression E and a mapping from the template parameters that appear within E to template arguments that are formed via substitution during constraint normalization in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the parameter mapping (13.5.3 [temp.constr.decl]).

An atomic constraint consists of an expression E and a parameter mapping M. M is a mapping from the template parameters that appear within E to template arguments that are expressed using the normalizing context of the atomic constraint. The normalizing context of an atomic constraint is

  • the surrounding context of the last concept-id for which arguments were substituted into the parameter mapping via constraint normalization (13.5.4 [temp.constr.normal]), if any;
  • otherwise, the surrounding context where E appears.

[Note: The atomic constraints in the associated constraints of a constrained entity have parameter mappings that map the template parameters that appear within their expressions to template arguments expressed using the context of the declaration of the constrained entity, which may involve the unsubstituted template parameters of the constrained entity. -- end note]

Date: 2025-11-06.23:04:52

The definition of "atomic constraint" is hard to read.

History
Date User Action Args
2026-03-26 12:33:59adminsetmessages: + msg8520
2026-03-26 11:31:45adminsetstatus: ready -> review
2026-03-26 11:24:20adminsetstatus: tentatively ready -> ready
2025-11-17 18:45:11adminsetstatus: open -> tentatively ready
2025-11-06 23:04:52adminsetmessages: + msg8346
2025-01-30 00:00:00admincreate