[clang] [Clang][Sema] Fix the lambda call expression inside of a type alias declaration (PR #82310)
Qizhi Hu via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 8 18:10:46 PDT 2024
jcsxky wrote:
> > Still crash on
> > ```c++
> > template<auto F> constexpr auto x = F();
> > template<class> constexpr int a() { return 1; }
> >
> > template <class>
> > struct A {
> > using Func = decltype(
> > []<class T>(T) {
> > return x<[] constexpr { return a<T>(); }>;
> > // return x<[] constexpr { return b(); }>;
> > }.template operator()<unsigned long long>('2')
> > );
> > };
> > A<short>::Func y;
> > ```
>
> That is a distinct case: Func does _not_ form a `TypeAliasTemplateDecl`, and thus it is _not_ supposed to be covered by this PR. Please submit a new issue for it.
Consider this one,
```cpp
template<auto F> constexpr auto x = F();
template<class> constexpr int a() { return 1; }
template <class>
struct A {
template<typename U>
using Func = decltype(
[]<class T>(T) {
return x<[] constexpr { return a<T>(); }>;
}.template operator()<unsigned long long>('2')
);
};
A<short>::Func<int> y;
```
`Func` is a `TypeAliasTemplateDecl` and crashes as well.
https://github.com/llvm/llvm-project/pull/82310
More information about the cfe-commits
mailing list