This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 116c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-03-08


2996. Impenetrable definition of atomic constraint

Section: 13.5.2.3  [temp.constr.atomic]     Status: open     Submitter: Brian Bi     Date: 2025-01-30

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

Possible resolution:

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 is a pair (E, M) where E is an expression and M is a mapping from the template parameters that appear within E to template arguments expressed using the normalizing context of the atomic constraint. The parameter mapping of an atomic constraint is M. The normalizing context of an atomic constraint is

[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]