그래서 내가 사용하는 라이브러리에는 열거 형이 있습니다 (이름이 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?
당신은 당신의 유형
std::hash
을 전문으로 할 수
당신이'enum '을 사용함에 따라이 [document] (http://isocpp.org/blog/2013/02/closer-to-perfection)은 C++ 11에서 소개 된'enum'에 대한 확장을 설명합니다 그냥 당신이 알 수없는 경우). – hmjd
@hmjd 재미있는 읽기, 감사합니다. – user1873947
[정렬되지 않은 컨테이너의 사용자 정의 형식에 대해 std :: hash :: operator()를 특수화하는 방법?] (http://stackoverflow.com/questions/8157937/how-to-specialize-stdhashkeyoperator-for -user-defined-in-unordered) –
Orient