[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