| 216 | |
| 217 | template<typename T> |
| 218 | void InsertTemplateArgs(const T& t) |
| 219 | { |
| 220 | if constexpr(std::is_same_v<T, FunctionDecl>) { |
| 221 | if(const auto* tmplArgs = t.getTemplateSpecializationArgs()) { |
| 222 | InsertTemplateArgs(*tmplArgs); |
| 223 | } |
| 224 | } else if constexpr(std::is_same_v<T, VarTemplateSpecializationDecl>) { |
| 225 | InsertTemplateArgs(t.getTemplateArgs()); |
| 226 | |
| 227 | } else if constexpr(requires { t.template_arguments(); }) { |
| 228 | if constexpr(std::is_same_v<DeclRefExpr, T>) { |
| 229 | if(0 == t.getNumTemplateArgs()) { |
| 230 | return; |
| 231 | } |
| 232 | } |
| 233 | |
| 234 | InsertTemplateArgs(t.template_arguments()); |
| 235 | |
| 236 | } else if constexpr(requires { t.asArray(); }) { |
| 237 | InsertTemplateArgs(t.asArray()); |
| 238 | } |
| 239 | } |
| 240 | |
| 241 | void InsertTemplateArgs(const ClassTemplateSpecializationDecl& clsTemplateSpe); |
| 242 | |