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

    <tr>
        <th>Summary</th>
        <td>
            error: missing 'template' keyword prior to dependent template name 'insert' impl_.insert<uses_vector_load()>(23);
        </td>
    </tr>

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

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

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

<pre>
    #include<bits/stdc++.h>

namespace cuco{
    namespace detail{
        template <typename viewT>
 void insert(viewT view){
            view.insert();
        }
 }

template <typename Key>
class static_multimap{
    public:
 ~static_multimap()=default;
    static_multimap(){
    }

 void insert(){
        auto view = get_device_mutable_view();
 detail::insert(view);
    }

    static constexpr bool uses_vector_load() noexcept{
        return false;
    }

 class device_view_impl_base;
    class device_mutable_view_impl;

 template <typename ViewImpl>
    class device_view_base{
 protected:
        device_view_base() noexcept:impl_{}{
 }

        protected:
        ViewImpl impl_;
    }; //class device_view_base

    class device_mutable_view:public device_view_base<device_mutable_view_impl>{
        public:
 device_mutable_view() noexcept{

        }

        void insert() noexcept;
        private:
        using device_view_base<device_mutable_view_impl>::impl_;
    }; //class device mutable view

    device_mutable_view get_device_mutable_view() const noexcept{
        return device_mutable_view();
 }
};

template <typename Key>
void 
static_multimap<Key>::device_mutable_view::insert() noexcept{
 impl_.insert<uses_vector_load()>(23);
}

template <typename Key>
class static_multimap<Key>::device_view_impl_base{
 protected:
    static constexpr bool uses_vector_load() noexcept{
 return false;
    }

    device_view_impl_base() noexcept{
 }
};  //class device_view_impl_base

template <typename Key>
class static_multimap<Key>::device_mutable_view_impl:public device_view_impl_base{
    public:
    device_mutable_view_impl() noexcept : device_view_impl_base{}{}

    template <bool uses_vector_load>
    std::enable_if_t<uses_vector_load,void> insert(int a) noexcept{}

    template <bool uses_vector_load>
 std::enable_if_t<not uses_vector_load,void> insert(int a) noexcept{}
}; //class device_mutable_view_impl
} //namespace cuco

template<typename TestType>
void test_cuco(){
 cuco::static_multimap<int> map{};
    map.insert();
}

int main(){
    test_cuco<int64_t>();
}
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0V0GTqjgQ_jXxknoWJgzogYOjY9XWXqf2SgVoNbuBUKRxnpf97VsEFA3hvZl9uxzUIp3ur7_u_hKFMfJUASTk5ZW87BeixbNukjCMXsIoXGS6uCaEcVnlqi2A8F0m0RB2MFjkhL0S9ro8E_5Ggj0Jtv1nJUowtciB5m2uSfzav6aU0nGpABRSPS12D0JZK4FACd_htYZuA71I-Hi_B6EXLQsqKwMNEra2i9aEsM3EX_d0a8u7fWfFHSsS74cX91_9pxfO73C9g8mVMIYaFCjztGwVylLUTyjqNlMyJ3zwSP92jQdI-wKOolX4BM5v--jeAeyQ46NEtKgtJ5TwPT0BpgVcZA5p2aLIFKQ9l89EDeXiW8K3T9S7dLp47knQXFcG4Xvd0ExrRVsDJr1AjrpJlRZFH5FWGr7nUOMEdgPYNhU9CmXghxH7kgw5dRBTWdYqzYSz78nuMXdrfzcdNng74Q8JH79Z47cZv9afDX3Pp240Qo5QjD0xPJM9DiV8azPpXMX70aGHctt4s3FusGnvziWTv1LCDoQdZjJxYs3ySPi2b_6pC76b5_1tUnp3hGb7ddo9M3P-_HoyMw-Uu1AaeREIE0pbI6vTV_Psp-nzNaCDl17tnEQ8gX483P1A_nTgPiEOI60W-ZcE1HLf_3TFju8GQ8uTv8Ee5cgvH5bfm_zznV92uihszfhjWv_NUeBNwlGln0jDL-rnp4XTUaAR35xnp-50VjZGV_8ToZ7x8mmPh3KPvPiHqXf7TAUlfDsfoNfoKcmPiftL-XicGCz6VKGyWOQx9ffxrhslwt9GJZMVUuGW7pfwzICpNHr68auAZo-eaRluGwZr58bpabLHHnsHg-_XGp41CMFgarc71yb7ziY9bUVZYZfgcOd7UL-O11LU_munU4OOlVLIynNfG0HZWFHY0f02dbcoEl5s-EYsIFlFcRQF64hFi3NSsCxYx6tABNGmEBmP2Oq42bysXpiINnyVLWTCAsYDtoqDkMdBtFxDJFYsZKuIhcfweCRhAKWQaqnUpVzq5rSQxrSQRMGarRdKZKDM7c9Dk3RG37L2ZEgYKGnQjNtQooIEmkY33diU0tgzk7D4XiQW07_g-qGbojtodUNR0wJqqAqocOxTW0XC4hu58b8R-UXbqOSMWJuuuLaNThLPbbbMdUnYocM9fH2rG_0n5EjYwebe_f-x6f8TAAD__852COU">