<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/76366>76366</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Wrong lookup handling in range-for loops
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Fedr
      </td>
    </tr>
</table>

<pre>
    This program
```
#include <vector>

namespace ns {

template <typename T>
constexpr auto operator*(T&& /*value*/) {
    struct custom_type {};
    return custom_type{};
};

}  // namespace ns

template <typename T>
constexpr void foo() {
    std::vector<T> vec{};
    for (const auto& curr : vec) {
        static_assert(std::is_same_v<const T&, decltype(curr)>);
    }
}

int main() {
    using namespace ns;
    foo<int>();
}
```
is ok in GCC and MSVC, but fails in Clang:
```
error: static assertion failed due to requirement 'std::is_same_v<const int &, const custom_type &>'
```
Note `custom_type` type that cames from  `ns::operator*` and it should be impossible to find in `foo()` by any form of lookup.

Online demo: https://godbolt.org/z/qds8qo4cK

Related discussion: https://stackoverflow.com/q/77712202/7325599
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclE1v4zYQhn8NfRkkUEhbHwcdvE7dQ9EWaIP2GFDkWGZDcRR-eJv--oK0N5FTo4cFDFnWzLwz7-OhZAhmdIg923xhm8eVTPFIvt-j9quB9Fv_dDQBZk-jlxOrHlm1ZXV1-Zx_cmGcskkjMLE7oYrkmfjhEixXJycMs1QILgBrvixjEafZyliK49uMORee3gUUuRDx79mDTJGAZvQyN-BbxtsnxmvGa2B8z_j2JG3CEtgz3n30AQAI0ScVQaUQaXrOfUq8eWRikeUxJu-WWZ-Sru6_PYFz_z0sbX6XxRMZDQcixtsbDjQTWya23wjvsgKcUN0wciAPjLdFuYDLlFTyHpjYlprP8ucWMhr1LENAHxlv31ua8BzkhM8nJnZnzTP5HWhUtnDibZZnvMu28nWhnad7x7fgYlyESRp3y24Kxo3XRK8NEhM742Jp1y47fjS53lMTgF7AOPhxtwPpNPz8-x-77GFIEQ7S2JCDOyvdmF3fkkDvM_nthRScSRlypR416IQQCTy-JuNxQheB8eZ_OJqSUVCeH1xtKK-LvebmML9Q3qi6Wm5rXUGpjEcZQWV4cPA0Qc7LBPMQyyNUV4WEiRCOlKyGAcFMM4VgBlusHEyOuyzwvpi5bHgD6d7yok1AB7BEL2m-X_67vzprHILGiTKyY4xzmaCclZH0QDbekx8Z3__D-P5Vh_aV1uqnpcZvmM-NBm2CSiEYcv-VClGqFzqhP1j6eq9oymKM75umeeC84vlW8M2m61a6F7oTnVxh_9BUYsM70VWrY69btWnVemjadaPXGjVv6robsK7atRi0WJmeV1w8cL55aEUtqns8dBtct-2mOVRrrlq2rnCSxt5be5qyq5UJIWHf1KKuV1YOaEN5xXLu8CuUIOM8v3F9n2vuhjQGtq6sCTF8qEQTLfZ_enLjhTEcpdM2Hw7jwEs34l0-7ZZoDqvkbf8JtInHNFywZNnL193s6S9UkfF9GSZkTHnYfwMAAP__TETMcw">