Я пишу концепцию C ++ для неупорядоченных ассоциативных контейнеров, а именно std :: unordered_map. У меня возникают трудности с обнаружением функции стирания (также вставки, но на данный момент давайте проигнорируем это).
Вот моя попытка концепции, к сожалению, она терпит неудачу, когда я пытаюсь вызвать шаблонную функцию, требующую ее.
template <class _ContainerType_>
concept InsertErasable = requires(_ContainerType_ a)
{
{ a.erase( _ContainerType_::const_iterator) } -> typename _ContainerType_::iterator;
};
Я использую его так:
template<InsertErasable _ContainerType_>
inline void Test123( const _ContainerType_& container )
{
return;
}
std::unordered_map<std::string, int> map;
::Test123(map);
ошибка C7602: «Test123»: связанные ограничения не выполнены
Использование последней версии Visual Studio 2019.
Он должен обнаружить первую подпись стирания, показанную здесь: https://en.cppreference.com/w/cpp/container/unordered_map/erase
Есть идеи, что я делаю неправильно?