Compiler throws errors with Registry information having deleted functions:
C:\Users\zomon\Desktop\SadBoat\SBE>nmake remake
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
nmake clean
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
del *.exe *.obj *.ilk *.pdb
nmake
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl /std:c++20 /WX /EHsc /Gd /JMC /permissive- /GS /Zi /Gm- /Od /sdl /MD src\main.cpp includes\glad.c lib/GLAD.lib lib/glfw3.lib opengl32.lib glu32.lib lib/assimp.lib lib/freetype.lib lib/irrKlang.lib lib/STB_IMAGE.lib lib/glew32s.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib lib/SOIL.lib odbc32.lib odbccp32.lib /I includes\ /I lib
Microsoft (R) C/C++ Optimizing Compiler Version 19.30.30709 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\unordered_map(50): error C2280: 'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare(const std::_Uhash_compare<_Kty,_Hasher,_Keyeq> &)': attempting to reference a deleted function
with
[
_Kty=std::pair<int,int>,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\xhash(165): note: compiler has generated 'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare' here
with
[
_Kty=std::pair<int,int>,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\xhash(165): note: 'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare(const std::_Uhash_compare<_Kty,_Hasher,_Keyeq> &)': function was implicitly deleted because a data member invokes a deleted or inaccessible function 'std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true>::_Compressed_pair(const std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true> &)'
with
[
_Kty=std::pair<int,int>,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>
]
and
[
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\xmemory(1380): note: 'std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true>::_Compressed_pair(const std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true> &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'std::hash<Key>::hash(const std::hash<Key> &)'
with
[
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>
]
and
[
Key=std::pair<int,int>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\type_traits(2118): note: 'std::hash<Key>::hash(const std::hash<Key> &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'std::_Conditionally_enabled_hash<_Kty,false>::_Conditionally_enabled_hash(const std::_Conditionally_enabled_hash<_Kty,false> &)'
with
[
Key=std::pair<int,int>
]
and
[
_Kty=std::pair<int,int>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\type_traits(2104): note: 'std::_Conditionally_enabled_hash<_Kty,false>::_Conditionally_enabled_hash(const std::_Conditionally_enabled_hash<_Kty,false> &)': function was explicitly deleted
with
[
_Kty=std::pair<int,int>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\unordered_map(50): note: while compiling class template member function 'std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>::_Umap_traits(const _Tr &) noexcept(false)'
with
[
_Kty=std::pair<int,int>,
_Ty=Hitbox *,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>,
_Alloc=std::allocator<std::pair<const std::pair<int,int>,Hitbox *>>,
_Tr=std::_Uhash_compare<std::pair<int,int>,std::hash<std::pair<int,int>>,std::equal_to<std::pair<int,int>>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\xhash(362): note: see reference to function template instantiation 'std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>::_Umap_traits(const _Tr &) noexcept(false)' being compiled
with
[
_Kty=std::pair<int,int>,
_Ty=Hitbox *,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>,
_Alloc=std::allocator<std::pair<const std::pair<int,int>,Hitbox *>>,
_Tr=std::_Uhash_compare<std::pair<int,int>,std::hash<std::pair<int,int>>,std::equal_to<std::pair<int,int>>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\xhash(321): note: see reference to class template instantiation 'std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>' being compiled
with
[
_Kty=std::pair<int,int>,
_Ty=Hitbox *,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>,
_Alloc=std::allocator<std::pair<const std::pair<int,int>,Hitbox *>>
]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\include\unordered_map(67): note: see reference to class template instantiation 'std::_Hash<std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>>' being compiled
with
[
_Kty=std::pair<int,int>,
_Ty=Hitbox *,
_Hasher=std::hash<std::pair<int,int>>,
_Keyeq=std::equal_to<std::pair<int,int>>,
_Alloc=std::allocator<std::pair<const std::pair<int,int>,Hitbox *>>
]
C:\Users\zomon\Desktop\SadBoat\SBE\src\registry.h(16): note: see reference to class template instantiation 'std::unordered_map<Key,Content,std::hash<Key>,std::equal_to<Key>,std::allocator<std::pair<const Key,Content>>>' being compiled
with
[
Key=std::pair<int,int>,
Content=Hitbox *
]
C:\Users\zomon\Desktop\SadBoat\SBE\src\hitbox.h(44): note: see reference to class template instantiation 'Registry<std::pair<int,int>,Hitbox *>' being compiled
Generating Code...
Compiling...
glad.c
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\nmake.EXE"' : return code '0x2'
Stop.
C:\Users\zomon\Desktop\SadBoat\SBE>nmake remake
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
nmake clean
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
del *.exe *.obj *.ilk *.pdb
nmake
Microsoft (R) Program Maintenance Utility Version 14.30.30709.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl /std:c++20 /WX /EHsc /Gd /JMC /permissive- /GS /Zi /Gm- /Od /sdl /MD src\main.cpp includes\glad.c lib/GLAD.lib lib/glfw3.lib opengl32.lib glu32.lib lib/assimp.lib lib/freetype.lib lib/irrKlang.lib lib/STB_IMAGE.lib lib/glew32s.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib lib/SOIL.lib odbc32.lib odbccp32.lib /I includes\ /I lib
Microsoft (R) C/C++ Optimizing Compiler Version 19.30.30709 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
C:\Users\zomon\Desktop\SadBoat\SBE\src\registry.h(16): error C7524: 'inline' specifier cannot appear on a block-scope declaration or non-static data member
C:\Users\zomon\Desktop\SadBoat\SBE\src\registry.h(120): note: see reference to class template instantiation 'Registry<Key,Content>' being compiled
Generating Code...
Compiling...
glad.c
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\nmake.EXE"' : return code '0x2'
Stop.
Issue was non-overloaded hash function in std::pair<int, int> which unordered_map relies on. See #8. Solved by changing key to int and adding wrapper to convert pair to int.
Compiler throws errors with Registry information having deleted functions: