Итак, библиотека, которую я использую, имеет перечисление (скажем, это имя LibEnum
). Мне нужно иметь std::unordered_set
LibEnum
, но я получаю ошибку компиляции, что для него нет специализированного std::hash
. Я мог бы легко написать его и просто вернуть число значений (первый элемент - 0, второй 1 и т. Д.), Но где именно я должен поставить эту специализацию и как она должна выглядеть? Я не могу изменить источники библиотеки.Как специализировать std :: hash для типа из другой библиотеки
enum LibEnum { A, B, C, D};
std::unordered_set <LibEnum> mySet;
//need std::hash for LibEnum
//how should it look like?
Как вы используете 'enum', этот [документ] (http://isocpp.org/blog/2013/02/closer-to-perfection) описывает расширения для' enum's, введенные в C++ 11 (просто позаботьтесь о том, чтобы вы не помогли). – hmjd
@hmjd интересно читать, спасибо. – user1873947
Возможный дубликат [Как специализировать std :: hash :: operator() для пользовательского типа в неупорядоченных контейнерах?] (Http://stackoverflow.com/questions/8157937/how-to-specialize-stdhashkeyoperator-for -user-defined-type-in-unordered) –
Orient