05-26-2013, 10:53 AM,
(This post was last modified: 05-26-2013, 10:55 AM by CrystalH.)
|
|
CrystalH
Member
|
Posts: 113
Threads: 9
Joined: Feb 2010
|
|
Compiling under VS 2012, string hash ?
Hi. I'm trying to build under Visual Studio 2012.
So far it was ok, but I hit 2 errors, beyond my knowledge how to fix it.
Code: 1>c:\w\vs2012\vc\include\xstddef(238): error C2338: The C++ Standard doesn't provide a hash for this type.
1> c:\w\vs2012\vc\include\type_traits(743) : see reference to class template instantiation 'std::hash<_Kty>' being compiled
1> with
1> [
1> _Kty=StringId
1> ]
1> c:\w\vs2012\vc\include\xhash(224) : see reference to class template instantiation 'std::is_empty<_Ty>' being compiled
1> with
1> [
1> _Ty=std::hash<StringId>
1> ]
1> c:\w\vs2012\vc\include\unordered_map(22) : see reference to class template instantiation 'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Hasher=std::hash<StringId>,
1> _Keyeq=std::equal_to<StringId>
1> ]
1> c:\w\vs2012\vc\include\xhash(261) : see reference to class template instantiation 'std::_Umap_traits<_Kty,_Ty,_Tr,_Alloc,_Mfl>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Ty=RenderTextureEntry,
1> _Tr=std::_Uhash_compare<StringId,std::hash<StringId>,std::equal_to<StringId>>,
1> _Alloc=std::allocator<std::pair<const StringId,RenderTextureEntry>>,
1> _Mfl=false
1> ]
1> c:\w\vs2012\vc\include\unordered_map(80) : see reference to class template instantiation 'std::_Hash<_Traits>' being compiled
1> with
1> [
1> _Traits=std::_Umap_traits<StringId,RenderTextureEntry,std::_Uhash_compare<StringId,std::hash<StringId>,std::equal_to<StringId>>,std::allocator<std::pair<const StringId,RenderTextureEntry>>,false>
1> ]
1> c:\w\_pro\vdr\vdrift\src\graphics\gl3v\renderpass.cpp(141) : see reference to class template instantiation 'std::unordered_map<_Kty,_Ty>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Ty=RenderTextureEntry
1> ]
and the second
Code: 1>c:\w\vs2012\vc\include\xstddef(238): error C2338: The C++ Standard doesn't provide a hash for this type.
1> c:\w\vs2012\vc\include\type_traits(743) : see reference to class template instantiation 'std::hash<_Kty>' being compiled
1> with
1> [
1> _Kty=StringId
1> ]
1> c:\w\vs2012\vc\include\xhash(224) : see reference to class template instantiation 'std::is_empty<_Ty>' being compiled
1> with
1> [
1> _Ty=std::hash<StringId>
1> ]
1> c:\w\vs2012\vc\include\unordered_map(22) : see reference to class template instantiation 'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Hasher=std::hash<StringId>,
1> _Keyeq=std::equal_to<StringId>
1> ]
1> c:\w\vs2012\vc\include\xhash(261) : see reference to class template instantiation 'std::_Umap_traits<_Kty,_Ty,_Tr,_Alloc,_Mfl>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Ty=std::vector<GLuint>,
1> _Tr=std::_Uhash_compare<StringId,std::hash<StringId>,std::equal_to<StringId>>,
1> _Alloc=std::allocator<std::pair<const StringId,std::vector<GLuint>>>,
1> _Mfl=false
1> ]
1> c:\w\vs2012\vc\include\unordered_map(80) : see reference to class template instantiation 'std::_Hash<_Traits>' being compiled
1> with
1> [
1> _Traits=std::_Umap_traits<StringId,std::vector<GLuint>,std::_Uhash_compare<StringId,std::hash<StringId>,std::equal_to<StringId>>,std::allocator<std::pair<const StringId,std::vector<GLuint>>>,false>
1> ]
1> c:\w\_pro\vdr\vdrift\src\graphics\gl3v\renderer.cpp(175) : see reference to class template instantiation 'std::unordered_map<_Kty,_Ty>' being compiled
1> with
1> [
1> _Kty=StringId,
1> _Ty=std::vector<GLuint>
1> ]
So it's same thing just in 2 files:
src\graphics\gl3v\renderpass.cpp(141)
src\graphics\gl3v\renderer.cpp(175)
I only found this:
http://stackoverflow.com/questions/15595...rdered-map
Don't know if it helps.
|
|
05-26-2013, 01:30 PM,
|
|
CrystalH
Member
|
Posts: 113
Threads: 9
Joined: Feb 2010
|
|
RE: Compiling under VS 2012, string hash ?
Thanks, works now.
Was in several places, maybe a typedef for iterator would be shorter.
Anyway here is the patch:
http://pastebin.com/Wja07VZk
|
|
|