hvdijk wrote:

ping @sdkrystian 

FWIW, `getTemplateArgsAsWritten()` is implemented as

```c++
  /// Retrieve the template argument list as written in the sources,
  /// if any.
  const ASTTemplateArgumentListInfo *getTemplateArgsAsWritten() const {
    if (auto *Info = ExplicitInfo.dyn_cast<ExplicitInstantiationInfo *>())
      return Info->TemplateArgsAsWritten;
    return cast<const ASTTemplateArgumentListInfo *>(ExplicitInfo);
  }
```

and `ExplicitInfo` is defined as

```
  /// Further info for explicit template specialization/instantiation.
  /// Does not apply to implicit specializations.
  SpecializationOrInstantiationInfo ExplicitInfo = nullptr;
```

which does not say that this is guaranteed to be `nullptr` for implicit 
specializations, and suggests to me that for implicit instantiations, ignoring 
it like I do in this PR is the right thing to do. However, maybe instead it 
would be better so that implicit specializations never have any `ExplicitInfo`?

https://github.com/llvm/llvm-project/pull/110899
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to