diff --git a/3380_extend_cnttp_2/extend-cnttp-2.md b/3380_extend_cnttp_2/extend-cnttp-2.md
index 9acaf441..30e8cfd1 100644
--- a/3380_extend_cnttp_2/extend-cnttp-2.md
+++ b/3380_extend_cnttp_2/extend-cnttp-2.md
@@ -795,9 +795,10 @@ For template-argument equivalence, we can say that two values of class type `C`
```cpp
consteval auto template_argument_equivalent(C const& a, C const& b) -> bool {
struct Serializer {
- std::vector That is, two values are template-argument-equivalent if they
@@ -1581,14 +1582,17 @@ The actual types of the (de)serializer objects are
implementation-defined, the only thing that matters is that they conform
-to the interface above.
+::vector<std::meta::info> output;
+ std
+consteval auto push(std::meta::info r) -> void {
+ .push_back(r);
+ output}
+
+// ... rest of API ...
+ };
+
+
+ Serializer sa, sb;.to_meta_representation(sa);
+ a.to_meta_representation(sb);
+ breturn sa.output == sb.output;
+ }
consteval auto template_argument_equivalent(C const& a, C const& b) -> bool {
struct Serializer {
- ::vector<std::meta::info> v;
- stdconsteval auto push(std::meta::info r) -> void {
- .push_back(r);
- v}
-
-// ... rest of API ...
- };
-
-
- Serializer sa, sb;.to_meta_representation(sa);
- a.to_meta_representation(sb);
- breturn sa.v == sb.v;
- }
3
auto serializer = make-serializer();
.to_meta_representation(serializer);
c
-auto deserializer = make-deserializer(serializer);
+ auto deserializer = make-deserializer-from(serializer);
return C::from_meta_representation(deserializer);
}();
We will also have to adjust std::meta::reflect_value()
to also do this normalization. Which means: