From 7df7e6e269dfd6d726592cc88898e44d2ca0e9c9 Mon Sep 17 00:00:00 2001
From: Barry Revzin
Date: Sat, 23 Nov 2024 11:16:40 +0100
Subject: [PATCH] Better?
---
.../explicit-implicit-template-region.md | 16 +------
.../p3525r0.html | 46 ++++---------------
2 files changed, 11 insertions(+), 51 deletions(-)
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 @@
Wording
-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 @@ 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 @@ 13.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 @@
Which 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