diff --git a/3525_explicit_implicit_template_region/explicit-implicit-template-region.md b/3525_explicit_implicit_template_region/explicit-implicit-template-region.md index 9ebb21e4..9e5e74a0 100644 --- a/3525_explicit_implicit_template_region/explicit-implicit-template-region.md +++ b/3525_explicit_implicit_template_region/explicit-implicit-template-region.md @@ -112,20 +112,6 @@ I believe this addresses all the implementor concerns with the original design. ## Wording -Extend [basic.scope.block]{.sref} to add `template` blocks: - -::: std -[1]{.pnum} Each - -* [1.1]{.pnum} selection or iteration statement ([stmt.select], [stmt.iter]), -* [1.2]{.pnum} substatement of such a statement, -* [1.*]{.pnum} [template block ([stmt.template]),]{.addu} -* [1.3]{.pnum} `$handler$` ([except.pre]), or -* [1.4]{.pnum} compound statement ([stmt.block]) that is not the `$compound-statement$` of a `$handler$` - -introduces a *block scope* that includes that statement or handler. -::: - Extend the grammar for statement in [stmt.pre]{.sref}: ::: std @@ -152,7 +138,7 @@ $template-block$: $compound-statement$ ``` -A *template block* introduces an explicit template region ([temp.pre]). +A *template block* introduces an explicit template region ([temp.pre]) encompassing the block scope introduced by the `$compound-statement$`. ::: example ```cpp diff --git a/3525_explicit_implicit_template_region/p3525r0.html b/3525_explicit_implicit_template_region/p3525r0.html index 33ec7bac..08aba0c1 100644 --- a/3525_explicit_implicit_template_region/p3525r0.html +++ b/3525_explicit_implicit_template_region/p3525r0.html @@ -737,33 +737,6 @@

[P3115R0]).

2.1 Wording

-

Extend 6.4.3 [basic.scope.block] -to add -template -blocks:

-
-
-

1 -Each

- -

introduces a block scope that includes that statement or -handler.

-
-

Extend the grammar for statement in 8.1 [stmt.pre]:

@@ -789,7 +762,8 @@

2.1
template-block:
   compound-statement

A template block introduces an explicit template region -([temp.pre]).

+([temp.pre]) encompassing the block scope introduced by the +compound-statement.

Example 1:
struct Point { int x, y; };
@@ -811,26 +785,26 @@ 

2.113.1 [temp.pre]:

-

8 +

8 An entity is templated if it is

    -
  • (8.1) +
  • (8.1) a template,
  • -
  • (8.2) +
  • (8.2) an entity defined ([basic.def]) or created ([class.temporary]) in a templated entity,
  • -
  • (8.3) +
  • (8.3) a member of a templated entity,
  • -
  • (8.4) +
  • (8.4) an enumerator for an enumeration that is a templated entity, or
  • -
  • (8.5) +
  • (8.5) the closure type of a lambda-expression ([expr.prim.lambda.closure]) appearing in the declaration of a templated entity. , or
    -
  • (8.6) +
  • (8.6) an entity defined or created within an explicit template region ([stmt.template]).
@@ -844,7 +818,7 @@

2.1Which needs a point of instantiation at the end of 13.8.4.1 [temp.point]:

-

* +

* For an explicit template region, the point of instantiation immediately follows the closing brace of the compound-statement of the