Skip to content

Commit 4dcf679

Browse files
committed
C++: Add getTemplateClass to DeductionGuide
1 parent 377301a commit 4dcf679

File tree

15 files changed

+9890
-551
lines changed

15 files changed

+9890
-551
lines changed

cpp/downgrades/e197626a6ebccd052d5c891975fccf8aebcc9803/old.dbscheme

Lines changed: 2305 additions & 0 deletions
Large diffs are not rendered by default.

cpp/downgrades/e197626a6ebccd052d5c891975fccf8aebcc9803/semmlecode.cpp.dbscheme

Lines changed: 2300 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
description: Add relation between deduction guides and class templates
2+
compatibility: full
3+
deduction_guide_for_class.rel: delete
File renamed without changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: feature
3+
---
4+
* A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide.

cpp/ql/lib/semmle/code/cpp/Function.qll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,4 +898,11 @@ class UserDefinedLiteral extends Function {
898898
*/
899899
class DeductionGuide extends Function {
900900
DeductionGuide() { functions(underlyingElement(this), _, 8) }
901+
902+
/**
903+
* Gets the class template for which this is a deduction guide.
904+
*/
905+
TemplateClass getTemplateClass() {
906+
deduction_guide_for_class(underlyingElement(this), unresolveElement(result))
907+
}
901908
}

cpp/ql/lib/semmlecode.cpp.dbscheme

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,11 @@ function_defaulted(unique int id: @function ref);
409409

410410
function_prototyped(unique int id: @function ref)
411411

412+
deduction_guide_for_class(
413+
int id: @function ref,
414+
int class_template: @usertype ref
415+
)
416+
412417
member_function_this_type(
413418
unique int id: @function ref,
414419
int this_type: @type ref

0 commit comments

Comments
 (0)