@@ -869,7 +869,7 @@ class AbstractClass extends Class {
869
869
* `FullClassTemplateSpecialization`.
870
870
*/
871
871
class TemplateClass extends Class {
872
- TemplateClass ( ) { usertypes ( underlyingElement ( this ) , _, 6 ) }
872
+ TemplateClass ( ) { usertypes ( underlyingElement ( this ) , _, [ 15 , 16 , 17 ] ) }
873
873
874
874
/**
875
875
* Gets a class instantiated from this template.
@@ -1076,13 +1076,19 @@ class VirtualBaseClass extends Class {
1076
1076
}
1077
1077
1078
1078
/**
1079
- * The proxy class (where needed) associated with a template parameter, as
1080
- * in the following code:
1081
- * ```
1079
+ * The proxy class (where needed) associated with a template parameter or a
1080
+ * decltype, as in the following code:
1081
+ * ```cpp
1082
1082
* template <typename T>
1083
1083
* struct S : T { // the type of this T is a proxy class
1084
1084
* ...
1085
1085
* };
1086
+ *
1087
+ * template <typename T>
1088
+ * concept C =
1089
+ * decltype(std::span{std::declval<T&>()})::extent
1090
+ * != std::dynamic_extent;
1091
+ * // the type of decltype(std::span{std::declval<T&>()}) is a proxy class
1086
1092
* ```
1087
1093
*/
1088
1094
class ProxyClass extends UserType {
@@ -1093,10 +1099,13 @@ class ProxyClass extends UserType {
1093
1099
/** Gets the location of the proxy class. */
1094
1100
override Location getLocation ( ) { result = this .getTemplateParameter ( ) .getDefinitionLocation ( ) }
1095
1101
1096
- /** Gets the template parameter for which this is the proxy class. */
1102
+ /** Gets the template parameter for which this is the proxy class, if any . */
1097
1103
TypeTemplateParameter getTemplateParameter ( ) {
1098
1104
is_proxy_class_for ( underlyingElement ( this ) , unresolveElement ( result ) )
1099
1105
}
1106
+
1107
+ /** Gets the decltype for which this is the proxy class, if any. */
1108
+ Decltype getDecltype ( ) { is_proxy_class_for ( underlyingElement ( this ) , unresolveElement ( result ) ) }
1100
1109
}
1101
1110
1102
1111
// Unpacks "array of ... of array of t" into t.
0 commit comments