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 @@
Extend 6.4.3 [basic.scope.block]
-to add
-template
-blocks:
--1 -Each
--
-- (1.1) -selection or iteration statement ([stmt.select], [stmt.iter]),
-- (1.2) -substatement of such a statement,
-- (1.*) -template block ([stmt.template]),
-- (1.3) -
-handler
([except.pre]), -or- (1.4) -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 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
.
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
@@ -844,7 +818,7 @@ 2.1Which needs a point of instantiation at the end of 13.8.4.1 [temp.point]: