sdkrystian wrote: @glandium I've reduced it to the following: ```cpp template<typename T> struct A { static constexpr bool B = true; };
template<bool V> struct C { }; template<typename T> struct D { C<A<T>::B> f(); }; template<typename T> auto D<T>::f() -> C<A<T>::B> { } ``` The problem is that we build a `DependentScopeDeclRefExpr` for `A<T>::B` in the first declaration of `f`, and a `CXXDependentScopeMemberExpr` for the second declaration of `f`. Since we have no idea whether `A<T>::B` will be an implicit member access, I think that the correct behavior is that `ActOnDependentIdExpression` should _never_ build a `CXXDependentScopeMemberExpr`. https://github.com/llvm/llvm-project/pull/91498 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits