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

    <tr>
        <th>Summary</th>
        <td>
            Clang-15.0.6: std::ranges::subrange doesn't work with std::vector<T>::iterator.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    `
#include <ranges>
#include <iostream>
#include <vector>

std::vector<int> ints{0, 1, 2, 3, 4};

std::ranges::subrange<std::vector<int>::iterator> rng;

int main() {
    std::cout << rng.front() << std::endl;
 std::cout << _GLIBCXX_RELEASE << std::endl;
    std::cout << __cplusplus << std::endl;
    
    return 0;
}
`

This code snippet will cause compilation error on Clang 15.0.x whereas MSVC and GCC 12 works well. libstdc++11 and 12 has been tested and failed.

Following is the error
`
/opt/compiler-explorer/gcc-12.2.0/lib/gcc/x86_64-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin'
        = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-12.2.0/lib/gcc/x86_64-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here
    using iterator_t = std::__detail::__range_iter_t<_Tp>;
 ^
/opt/compiler-explorer/gcc-12.2.0/lib/gcc/x86_64-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/ranges_util.h:121:36: note: in instantiation of template type alias 'iterator_t' requested here
 requires contiguous_iterator<iterator_t<_Derived>>
 ^
/opt/compiler-explorer/gcc-12.2.0/lib/gcc/x86_64-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/ranges_util.h:228:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::subrange<__gnu_cxx::__normal_iterator<int *, std::vector<int>>, __gnu_cxx::__normal_iterator<int *, std::vector<int>>, std::ranges::subrange_kind::sized>>' requested here
    class subrange : public view_interface<subrange<_It, _Sent, _Kind>>
...
 `
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVk2P2zYT_jX0ZWBBIi3JPvjg1dpB8Oa9NEGRG0FRY5kNTaoktd700N9ekPLHJvuRoughXaxHFIcczjzzDEfCe9UbxDUp70h5PxNjOFi3Po1fcZWzatba7uuaVDnJ70m-IZQpI_XYIRDWOGF69IRtX1Iq64NDcXxF_YAyWHdTJulDR9iGsM1F2ygTCNuCMsGT-i4ntIEiChoFi2JB6nvC7l40c3Ewjv3YplfCmteOmSZVQCcm38CZ_jvbygQ4CmUIXRK6AlKftQAAV7vSjiEGSVgTTWR7Z0247Jimr2vRdPp6xssm-LsP7--az5_5L9sP283H7Q9svOYJ53LQo4-_H1u4jRyG0RnIb0DU9-fBlRZJfjooD9J2CN6oYcAAJ6U1SDF6BGmPg9IiKGsAnbMOrIFGC9NDUWZ59ginAzoUHv7_8dcGhOngXdNAQeFk3RcPJ9Q6A61aHzpJ6B2hd0WRlhUUDsJDi2ggoA_Ypem9UBq77KmDO6u1PSnTg_IQDjg58n0sdGeHQOhu8hjdHB8HbR06Qne9lPOCZjTLCd1p1U5ThO4elxWvFnOtzPg4781I6O66Lsuei3MlxGOmYJ5uaFXwcc2ZiFxaI3EIPjsQtlktKWGbghG2OfvPNmAsHEWQhxjbfjQywby3DqTQGoIFQmvOW-wjcetbblOm2T10KHX4OiChy6c1w7kcfeBCSvTXqbOV5ZU7cfOD0IQ1_NNAaBUrKXH9_H-lFSm3f77197MlYIKCt8Jjgr5clVFOgAeMT2VAGR-ECWritt1DwOOgRUCIiILQSvgJ_2SPx7TyQGgNDn8fJ8JG6t-yMvrE0Uv6Q0rRFW7OOwxC6cvbN1anHMSr7AnoPymuY1A64VrQgrANq_4hsDegXgU1TiqH8XoyQfWjHT2_3fPNEwus4ffo1AN2CcXtfwdFSpdRrv42ilILnwB8sV8-KDxxZQK6vZDfdM1XuirnvRm5fHy8ENNYdxT6G5xNAEI3sW2_3oO3Uf2vGnvTc_5FmbPaqz-uaX-jPCfcLvsh4jyMrVYSnmP2BJ73IQX2Ec00-F8698axLMsuZKvyWbdm3YqtxAzXRVUXq2VVlvXssF7QRVUwUVSVrNqFrLuSLVFIsRT5UtS0nKk1zSktKC2LakFZnRVMdC3dM7YoaEe7PVnkeBRKZ1o_HDPr-pnyfsR1uapW9UyLFrW_fA26dVw0b8fek0WulQ_-ti2ooHGdevg89fBUwG-CDZ1FH1tQSG0dTiocXsjep2cfY9lsdHp9CGFIFukulpYKh7HNpD3GatMPl8d8cPY3lLFIU2SxWFJwfwUAAP__QvFKsg">