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

Reply via email to