Jump to content

niokio

Member
  • Posts

    42
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by niokio

  1. Good job. Here are some more small additions. You can add to the post

    1. file: DragonSoul.cpp

    sys_err ("Cannot create DRAGON_HEART(%d).", DRAGON_HEART_VNUM);
    return NULL;

    replace to:

    sys_err ("Cannot create DRAGON_HEART(%d).", DRAGON_HEART_VNUM);
    return false;

     

    2. file utils.cpp

    return thecore_random() / (RAND_MAX + 1.f) * (b - a) + a;

    replace to:

    return thecore_random() / ((double)RAND_MAX + 1.f) * (b - a) + a;

     

    • Love 5
  2. Hi dev. 
    Why use such a bad method? Why is there "HairDataCount" there? Let's fix this. Because specifying 999 is a bad decision. Since our loop costs 999 iterations (although that much is not required).

    Group HairData
    {
    	PathName	"d:/ymir Work/pc2/assassin/"
    
    	HairDataCount 			999
    	Group HairData00
    	{	
    		HairIndex			0
    		Model				"hair/hair_1_1.gr2"
    		SourceSkin			"hair/hair_1_1.dds"
    		TargetSkin			"assassin_hair_01.dds"
    	}


    1. Go to GameLib->RaceDataFile.cpp

    2. looking for a string "if (TextFileLoader.SetChildNode("shapedata"))"

    3. look for "FIX_SHAPE_GROUP_COUNT" and do how

    	if (TextFileLoader.SetChildNode("shapedata"))
    	{
    		std::string strPathName;
    		DWORD dwShapeDataCount = 0;
    		if (
    			TextFileLoader.GetTokenString("pathname", &strPathName)
    #ifndef FIX_SHAPE_GROUP_COUNT
    			&& TextFileLoader.GetTokenDoubleWord("shapedatacount", &dwShapeDataCount)
    #endif
    		)
    		{
    #ifdef FIX_SHAPE_GROUP_COUNT
    			while (TextFileLoader.SetChildNode("shapedata", dwShapeDataCount))
    #else
    			for (DWORD i = 0; i < dwShapeDataCount; ++i)
    #endif
    			{
    #ifndef FIX_SHAPE_GROUP_COUNT
    				if (!TextFileLoader.SetChildNode("shapedata", i))
    				{
    					continue;
    				}
    #endif
    
    				/////////////////////////
    				// Temporary - АМєҐЖ®ё¦ А§ЗС АУЅГ ±вґЙ
    				TextFileLoader.GetTokenString("specialpath", &strPathName);
    				/////////////////////////
    
    				DWORD dwShapeIndex;
    				if (!TextFileLoader.GetTokenDoubleWord("shapeindex", &dwShapeIndex))
    				{
    #ifdef FIX_SHAPE_GROUP_COUNT
    					dwShapeDataCount++;
    #endif
    					continue;
    				}
    
    				// LOCAL_PATH_SUPPORT
    				std::string strModel;
    				if (TextFileLoader.GetTokenString("model", &strModel))
    				{
    					SetShapeModel(dwShapeIndex, (strPathName + strModel).c_str());
    				}
    				else
    				{
    					if (!TextFileLoader.GetTokenString("local_model", &strModel))
    					{
    #ifdef FIX_SHAPE_GROUP_COUNT
    						dwShapeDataCount++;
    #endif
    						continue;
    					}
    
    					SetShapeModel(dwShapeIndex, strModel.c_str());
    				}
    				// END_OF_LOCAL_PATH_SUPPORT
    
    				std::string strSourceSkin;
    				std::string strTargetSkin;
    
    				// LOCAL_PATH_SUPPORT
    				if (TextFileLoader.GetTokenString("local_sourceskin", &strSourceSkin) && TextFileLoader.GetTokenString("local_targetskin", &strTargetSkin))
    				{
    					AppendShapeSkin(dwShapeIndex, 0, strSourceSkin.c_str(), strTargetSkin.c_str());
    				}
    				// END_OF_LOCAL_PATH_SUPPORT
    
    				if (TextFileLoader.GetTokenString("sourceskin", &strSourceSkin) && TextFileLoader.GetTokenString("targetskin", &strTargetSkin))
    				{
    					AppendShapeSkin(dwShapeIndex, 0, (strPathName + strSourceSkin).c_str(), (strPathName + strTargetSkin).c_str());
    				}
    
    				if (TextFileLoader.GetTokenString("sourceskin2", &strSourceSkin) && TextFileLoader.GetTokenString("targetskin2", &strTargetSkin))
    				{
    					AppendShapeSkin(dwShapeIndex, 0, (strPathName + strSourceSkin).c_str(), (strPathName + strTargetSkin).c_str());
    				}
    
    #ifdef FIX_SHAPE_GROUP_COUNT
    				dwShapeDataCount++;
    #endif
    				TextFileLoader.SetParentNode();
    			}
    		}
    
    		TextFileLoader.SetParentNode();
    	}


    4. and do the same with hair part

    	if (TextFileLoader.SetChildNode("hairdata"))
    	{
    		std::string strPathName;
    		DWORD dwHairDataCount = 0;
    
    		if (
    			TextFileLoader.GetTokenString("pathname", &strPathName)
    #ifndef FIX_HAIR_GROUP_COUNT
    			&& TextFileLoader.GetTokenDoubleWord("hairdatacount", &dwHairDataCount)
    #endif
    		)
    		{
    #ifdef FIX_HAIR_GROUP_COUNT
    			while(TextFileLoader.SetChildNode("hairdata", dwHairDataCount))
    #else
    			for (DWORD i = 0; i < dwHairDataCount; ++i)
    #endif
    			{
    #ifndef FIX_HAIR_GROUP_COUNT
    				if (!TextFileLoader.SetChildNode("hairdata", i))
    				{
    					continue;
    				}
    #endif
    
    				/////////////////////////
    				// Temporary - АМєҐЖ®ё¦ А§ЗС АУЅГ ±вґЙ
    				TextFileLoader.GetTokenString("specialpath", &strPathName);
    				/////////////////////////
    
    				DWORD dwShapeIndex;
    				if (!TextFileLoader.GetTokenDoubleWord("hairindex", &dwShapeIndex))
    				{
    #ifdef FIX_HAIR_GROUP_COUNT
    					dwHairDataCount++;
    #endif
    					continue;
    				}
    
    				std::string strModel;
    				std::string strSourceSkin;
    				std::string strTargetSkin;
    				if (TextFileLoader.GetTokenString("model", &strModel) && TextFileLoader.GetTokenString("sourceskin", &strSourceSkin) && TextFileLoader.GetTokenString("targetskin", &strTargetSkin))
    				{
    					SetHairSkin(dwShapeIndex, 0, (strPathName + strModel).c_str(), (strPathName + strSourceSkin).c_str(), (strPathName + strTargetSkin).c_str());
    				}
    
    #ifdef FIX_HAIR_GROUP_COUNT
    				dwHairDataCount++;
    #endif
    				TextFileLoader.SetParentNode();
    			}
    		}
    
    		TextFileLoader.SetParentNode();
    	}

     

    5. Add to Userinterface->Locale_inc.h

    #define FIX_SHAPE_GROUP_COUNT
    #define FIX_HAIR_GROUP_COUNT

     

    6. And most importantly, you need to have the correct sequence of groups. For example:

    	Group ShapeData08
    	{
    		ShapeIndex			9
    		Model				"assassin_yonga.GR2"
    		SourceSkin			"assassin_yonga.DDS"
    		TargetSkin			"assassin_yonga.DDS"
    	}
    	Group ShapeData09
    	{
    		ShapeIndex			10
    		Model				"assassin_yonga.GR2"
    		SourceSkin			"assassin_yonga.DDS"
    		TargetSkin			"assassin_salpung.DDS"
    	}
    	Group ShapeData10
    	{
    		ShapeIndex			11
    		Model				"assassin_bihyeon.GR2"
    		SourceSkin			"assassin_bihyeon.DDS"
    		TargetSkin			"assassin_bihyeon.DDS"
    	}

    (if, for example, after ShapeData08 there is ShapeData11, then the loop will end on ShapeData08 and finish its work.)

    If anyone has any ideas on how to improve the code, please share.

    • Metin2 Dev 1
    • Lmao 1
    • Good 2
    • Love 1
    • Love 2
  3. Hi devs, some times a go, I remove a billing system from my source. But after i found errors in auth core.
     

    Quote

    Process: in InputDB: UNKNOWN HEADER: 128, LAST HEADER: 0(0), REMAIN BYTES: 64, DESC: 14
    Process: in InputDB: UNKNOWN HEADER: 130, LAST HEADER: 0(0), REMAIN BYTES: 18, DESC: 14


    and these errors are repeated every time you connect to the server. Maybe someone knows why this is and how to fix it?

  4. 1 hour ago, intern35 said:

    I don't know exactly what the problem is, because the screenshot doesn't work,
    but I can recommend adding systems as in the example below, at least you have a smaller chance to make a mistake while indexing them.

    GameType.h:

    
    #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
     
        const DWORD c_New_Equipment_Start = c_Equipment_Start + 21
    	#ifdef ENABLE_SASH_SYSTEM
    	+1
    	#endif
    	#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    	+1
    	#endif
    	;
     
        const DWORD c_New_Equipment_Count = 3;
        const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
        const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
        const DWORD c_Equipment_Belt  = c_New_Equipment_Start + 2;;
    #endif
    
    
    #ifdef ENABLE_COSTUME_SYSTEM
    	const DWORD c_Costume_Slot_Start	= c_Equipment_Start + 19;
    	const DWORD	c_Costume_Slot_Body		= c_Costume_Slot_Start + 0;
    	const DWORD	c_Costume_Slot_Hair		= c_Costume_Slot_Start + 1;
    	#ifdef ENABLE_SASH_SYSTEM
    		const DWORD	c_Costume_Slot_Sash		= c_Costume_Slot_Start + 2;
    	#endif
    	#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    		const DWORD c_Costume_Slot_Weapon 	= c_Costume_Slot_Start + 3;
    	#endif
    	
    
    	const DWORD c_Costume_Slot_Count = 2
    	#ifdef ENABLE_SASH_SYSTEM
    	+1
    	#endif
    	#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    	+1
    	#endif
    	;
    
    	const DWORD c_Costume_Slot_End		= c_Costume_Slot_Start + c_Costume_Slot_Count;
    #endif

     

    I update a pic, mb its help...

  5. Hey guys, i have the bug with inventory. Can anyone know where i could make a mistake?
    Untitled-1.jpg

    ItemData.h:

    Spoiler

                WEAR_COSTUME_BODY,    // 19
                WEAR_COSTUME_HAIR,    // 20
    #ifdef ENABLE_MOUNT_COSTUME_SYSTEM
                WEAR_COSTUME_MOUNT, // 21
    #endif
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
                WEAR_COSTUME_WEAPON, // 22
    #endif

                WEAR_RING1 = 24,
                WEAR_RING2 = 25,
                WEAR_BELT = 26,

                WEAR_MAX_NUM = 32,


    GameType.h:

    Spoiler

        const DWORD c_New_Equipment_Start = 24;
        const DWORD c_New_Equipment_Count = 3;
        const DWORD c_Equipment_Ring1 = CItemData::WEAR_RING1;
        const DWORD c_Equipment_Ring2 = CItemData::WEAR_RING2;
        const DWORD c_Equipment_Belt = CItemData::WEAR_BELT;;


    length.h:

    Spoiler

        WEAR_COSTUME_BODY,    // 19
        WEAR_COSTUME_HAIR,    // 20
    #ifdef ENABLE_MOUNT_COSTUME_SYSTEM
        WEAR_COSTUME_MOUNT, // 21
    #endif
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
        WEAR_COSTUME_WEAPON, // 22
    #endif
        WEAR_RING2 = 24,
        WEAR_RING1 = 25,
        WEAR_BELT = 26,

        WEAR_MAX = 32


    inventorywindow.py:

    Spoiler

                                "slot" : (
                                    {"index":item.EQUIPMENT_BODY, "x":39, "y":37, "width":32, "height":64},
                                    {"index":item.EQUIPMENT_HEAD, "x":39, "y":2, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_SHOES, "x":39, "y":145, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_WRIST, "x":75, "y":67, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_WEAPON, "x":3, "y":3, "width":32, "height":96},
                                    {"index":item.EQUIPMENT_NECK, "x":114, "y":67, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_EAR, "x":114, "y":35, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_UNIQUE1, "x":2, "y":145, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_UNIQUE2, "x":75, "y":145, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_ARROW, "x":114, "y":2, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_SHIELD, "x":75, "y":35, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_RING1, "x":2, "y":106, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_RING2, "x":75, "y":106, "width":32, "height":32},
                                    {"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32},
                                ),

     

  6. #Update 0.2
    - Added change log.
    - Writes paths to all files (on "granny_list").
    - Converter goes through all folders and subfolders.
    - The converter is written in C++
    - Recompile preprocessor.
    - Removed .bat bullshit :D


    Note: The folder name can not contain spaces.
    Example: "...\converter\old\ymir work\monster" -> "...\converter\old\monster"

  7. 4 minutes ago, .plechito' said:

    1. I have to start run.bat as administrator
    2. It wrote me that files are trnasformed succesfully but it doesnt create new folder and doesnt convert the files :(:D

    u have 2 folder: "new" and "old". You put your files on folder "old" and then start "run.bat".

    If u dont have this folder -> create.

     try :D

  8. M2 Download Center

    This is the hidden content, please
    ( Internal )

    Password: metin2.dev

     

    Hi guys, its small release Granny Converter to 2.11.8 version :D

    Spoiler

    image.jpg

    Download: 

    This is the hidden content, please

    Src: 

    This is the hidden content, please

    Virustotal

    This is the hidden content, please


    Note: The folder name can not contain spaces.
    Example: "...\converter\old\ymir work\monster" -> "...\converter\old\monster"


    If you find any shortcomings write in the comments... sorry for my english

    • Metin2 Dev 137
    • kekw 2
    • Eyes 6
    • Dislove 2
    • Angry 3
    • Not Good 3
    • Sad 1
    • Cry 2
    • Think 5
    • Confused 1
    • Scream 3
    • Lmao 3
    • Good 61
    • Love 9
    • Love 109
  9.  

     

    252709OrangeWarning.pngNew Link  

     

     

     

    Hi, recently released a new version of llvm (6) and I decided to update the source of vanilla 70220. (NOT TESTED)

     

    This is the hidden content, please

     

    1. Cryptopp 5.6.5
    2. Boost 1.65.1
    3. Minilzo 2.09
    4. MariaDB 101
    5. DevIL 1.8.7

     

    To install, you will need several packages.

     

    1. pkg install gmake
    2. pkg install subversion
    3. pkg install clang-devel

     

    Compiled on freebsd 11.1 i386
    Best regard :D

    • Metin2 Dev 1
  10. Hi dev, when i try compile a game core. I have this error. Boost version 1.62, i try 1.64, 1.65 (beta), 1.43. And none works... Help please, thanks in advance.

    Spoiler

    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: error: no matching function for call to 'hash_value(const VID&)'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/intrusive_ptr.hpp:16:0,
                     from event.h:10,
                     from stdafx.h:39,
                     from char_skill.cpp:1:
    ../../../Extern/include/boost/smart_ptr/intrusive_ptr.hpp:353:33: note: candidate: template<class T> std::size_t boost::hash_value(const boost::intrusive_ptr<T>&)
     template< class T > std::size_t hash_value( boost::intrusive_ptr<T> const & p )
                                     ^~~~~~~~~~
    ../../../Extern/include/boost/smart_ptr/intrusive_ptr.hpp:353:33: note:   template argument deduction/substitution failed:
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const boost::intrusive_ptr<T>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/functional/hash.hpp:6:0,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/hash.hpp:258:57: note: candidate: template<class T> typename boost::hash_detail::basic_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::basic_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:258:57: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::basic_numbers<T>::type boost::hash_value(T) [with T = VID]':
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:258:57: error: no type named 'type' in 'struct boost::hash_detail::basic_numbers<VID>'
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:264:56: note: candidate: template<class T> typename boost::hash_detail::long_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::long_numbers<T>::type hash_value(T v)
                                                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:264:56: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::long_numbers<T>::type boost::hash_value(T) [with T = VID]':
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:264:56: error: no type named 'type' in 'struct boost::hash_detail::long_numbers<VID>'
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:270:57: note: candidate: template<class T> typename boost::hash_detail::ulong_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::ulong_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:270:57: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::ulong_numbers<T>::type boost::hash_value(T) [with T = VID]':
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:270:57: error: no type named 'type' in 'struct boost::hash_detail::ulong_numbers<VID>'
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:277:9: note: candidate: template<class T> typename boost::enable_if<boost::is_enum<T>, unsigned int>::type boost::hash_value(T)
             hash_value(T v)
             ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:277:9: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::enable_if<boost::is_enum<T>, unsigned int>::type boost::hash_value(T) [with T = VID]':
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:277:9: error: no type named 'type' in 'struct boost::enable_if<boost::is_enum<VID>, unsigned int>'
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:284:36: note: candidate: template<class T> std::size_t boost::hash_value(T* const&)
         template <class T> std::size_t hash_value(T* const& v)
                                        ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:284:36: note:   template argument deduction/substitution failed:
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'T* const' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/functional/hash.hpp:6:0,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/hash.hpp:372:24: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(const T (&)[N])
         inline std::size_t hash_value(const T (&x)[N])
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:372:24: note:   template argument deduction/substitution failed:
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'const T [N]' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/functional/hash.hpp:6:0,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/hash.hpp:378:24: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(T (&)[N])
         inline std::size_t hash_value(T (&x)[N])
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:378:24: note:   template argument deduction/substitution failed:
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'T [N]' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/functional/hash.hpp:6:0,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/hash.hpp:385:24: note: candidate: template<class Ch, class A> std::size_t boost::hash_value(const std::__cxx11::basic_string<Ch, std::char_traits<_CharT>, A>&)
         inline std::size_t hash_value(
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:385:24: note:   template argument deduction/substitution failed:
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::__cxx11::basic_string<Ch, std::char_traits<_CharT>, A>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from ../../../Extern/include/boost/functional/hash.hpp:6:0,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/hash.hpp:392:57: note: candidate: template<class T> typename boost::hash_detail::float_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::float_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:392:57: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::float_numbers<T>::type boost::hash_value(T) [with T = VID]':
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:392:57: error: no type named 'type' in 'struct boost::hash_detail::float_numbers<VID>'
    ../../../Extern/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    ../../../Extern/include/boost/unordered/detail/buckets.hpp:482:22:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:692:38:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/detail/table.hpp:718:36:   required from 'boost::unordered::detail::table<Types>::iterator boost::unordered::detail::table<Types>::find_node(const key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; typename Types::node = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >; boost::unordered::detail::table<Types>::key_type = VID]'
    ../../../Extern/include/boost/unordered/unordered_map.hpp:1211:34:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    ../../../Extern/include/boost/functional/hash/hash.hpp:398:24: note: candidate: std::size_t boost::hash_value(std::type_index)
         inline std::size_t hash_value(std::type_index v)
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/hash.hpp:398:24: note:   no known conversion for argument 1 from 'const VID' to 'std::type_index'
    In file included from ../../../Extern/include/boost/functional/hash/hash.hpp:560:0,
                     from ../../../Extern/include/boost/functional/hash.hpp:6,
                     from ../../../Extern/include/boost/unordered/unordered_map.hpp:19,
                     from ../../../Extern/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:67:17: note: candidate: template<class A, class B> std::size_t boost::hash_value(const std::pair<_T1, _T2>&)
         std::size_t hash_value(std::pair<A, B> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:67:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::pair<_T1, _T2>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:76:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::vector<_Tp, _Alloc>&)
         std::size_t hash_value(std::vector<T, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:76:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::vector<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:82:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::__cxx11::list<_Tp, _Alloc>&)
         std::size_t hash_value(std::list<T, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:82:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::__cxx11::list<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:88:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::deque<_Tp, _Alloc>&)
         std::size_t hash_value(std::deque<T, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:88:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::deque<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:94:17: note: candidate: template<class K, class C, class A> std::size_t boost::hash_value(const std::set<_Key, _Compare, _Alloc>&)
         std::size_t hash_value(std::set<K, C, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:94:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::set<_Key, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:100:17: note: candidate: template<class K, class C, class A> std::size_t boost::hash_value(const std::multiset<_Key, _Compare, _Alloc>&)
         std::size_t hash_value(std::multiset<K, C, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:100:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::multiset<_Key, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:106:17: note: candidate: template<class K, class T, class C, class A> std::size_t boost::hash_value(const std::map<_Key, _Tp, _Compare, _Alloc>&)
         std::size_t hash_value(std::map<K, T, C, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:106:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:112:17: note: candidate: template<class K, class T, class C, class A> std::size_t boost::hash_value(const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
         std::size_t hash_value(std::multimap<K, T, C, A> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:112:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:118:17: note: candidate: template<class T> std::size_t boost::hash_value(const std::complex<_Tp>&)
         std::size_t hash_value(std::complex<T> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:118:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::complex<_Tp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:128:17: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(const std::array<_Tp, _Nm>&)
         std::size_t hash_value(std::array<T, N> const& v)
                     ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:128:17: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::array<_Tp, _Nm>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:163:24: note: candidate: template<class ... T> std::size_t boost::hash_value(const std::tuple<_Tps ...>&)
         inline std::size_t hash_value(std::tuple<T...> const& v)
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:163:24: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::tuple<_Tps ...>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:193:24: note: candidate: template<class T> std::size_t boost::hash_value(const std::shared_ptr<_Tp>&)
         inline std::size_t hash_value(std::shared_ptr<T> const& x) {
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:193:24: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::shared_ptr<_Tp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:198:24: note: candidate: template<class T, class Deleter> std::size_t boost::hash_value(const std::unique_ptr<_Tp, _Dp>&)
         inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
                            ^~~~~~~~~~
    ../../../Extern/include/boost/functional/hash/extensions.hpp:198:24: note:   template argument deduction/substitution failed:
    ../../../Extern/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::unique_ptr<_Tp, _Dp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    GCC7 COMPILE: config.cpp
    GCC7 COMPILE: constants.cpp
    gmake: *** [Makefile:68: .obj/char_skill.o] Error 1
    gmake: *** Waiting for unfinished jobs....

    ^Cgmake: *** Deleting file '.obj/char_item.o'
    gmake: *** [Makefile:68: .obj/char_item.o] Interrupt
    gmake: *** [Makefile:68: .obj/char.o] Interrupt

    root@freebsd11:/usr/src/best_source/Srcs/Server/game/src # gmake dep
    makedepend -f Depend -I../../../Extern/include/boost -I../../libdevil -I../../libmysql/include -I../../../Extern/include/boost -I../../../Extern/include/cryptopp -I../../libhackshield/include -I../../libxtrap/include -I../../liblua/include -I/usr/include/c++/4.2 -p.obj/ BattleArena.cpp FSM.cpp MarkConvert.cpp MarkImage.cpp MarkManager.cpp OXEvent.cpp TrafficProfiler.cpp acce.cpp ani.cpp arena.cpp banword.cpp battle.cpp blend_item.cpp block_country.cpp buffer_manager.cpp building.cpp castle.cpp char.cpp char_affect.cpp char_battle.cpp char_change_empire.cpp char_horse.cpp char_item.cpp char_manager.cpp char_quickslot.cpp char_resist.cpp char_skill.cpp char_state.cpp PetSystem.cpp cmd.cpp cmd_emotion.cpp cmd_general.cpp cmd_gm.cpp cmd_oxevent.cpp config.cpp constants.cpp crc32.cpp cube.cpp db.cpp desc.cpp desc_client.cpp desc_manager.cpp desc_p2p.cpp dev_log.cpp dungeon.cpp empire_text_convert.cpp entity.cpp entity_view.cpp event.cpp event_queue.cpp exchange.cpp file_loader.cpp fishing.cpp gm.cpp guild.cpp guild_manager.cpp guild_war.cpp horse_rider.cpp horsename_manager.cpp input.cpp input_auth.cpp input_db.cpp input_login.cpp input_main.cpp input_p2p.cpp input_teen.cpp input_udp.cpp ip_ban.cpp item.cpp item_addon.cpp item_attribute.cpp item_manager.cpp item_manager_idrange.cpp locale.cpp locale_service.cpp log.cpp login_data.cpp lzo_manager.cpp marriage.cpp matrix_card.cpp messenger_manager.cpp mining.cpp mob_manager.cpp monarch.cpp motion.cpp over9refine.cpp p2p.cpp packet_info.cpp party.cpp passpod.cpp pcbang.cpp polymorph.cpp priv_manager.cpp pvp.cpp questevent.cpp questlua.cpp questlua_affect.cpp questlua_arena.cpp questlua_ba.cpp questlua_building.cpp questlua_danceevent.cpp questlua_dungeon.cpp questlua_forked.cpp questlua_game.cpp questlua_global.cpp questlua_guild.cpp questlua_horse.cpp questlua_pet.cpp questlua_item.cpp questlua_marriage.cpp questlua_mgmt.cpp questlua_monarch.cpp questlua_npc.cpp questlua_oxevent.cpp questlua_party.cpp questlua_pc.cpp questlua_quest.cpp questlua_target.cpp questmanager.cpp questnpc.cpp questpc.cpp refine.cpp regen.cpp safebox.cpp sectree.cpp sectree_manager.cpp sequence.cpp shop.cpp skill.cpp start_position.cpp target.cpp text_file_loader.cpp trigger.cpp utils.cpp vector.cpp war_map.cpp wedding.cpp xmas_event.cpp version.cpp panama.cpp threeway_war.cpp map_location.cpp auth_brazil.cpp BlueDragon.cpp BlueDragon_Binder.cpp DragonLair.cpp questlua_dragonlair.cpp HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp skill_power.cpp affect.cpp SpeedServer.cpp questlua_speedserver.cpp XTrapManager.cpp auction_manager.cpp FileMonitor_FreeBSD.cpp ClientPackageCryptInfo.cpp cipher.cpp buff_on_attributes.cpp dragon_soul_table.cpp DragonSoul.cpp group_text_parse_tree.cpp char_dragonsoul.cpp questlua_dragonsoul.cpp shop_manager.cpp shopEx.cpp item_manager_read_tables.cpp questlua_mysql.cpp New_PetSystem.cpp questlua_petnew.cpp offline_shop.cpp offlineshop_manager.cpp offlineshop_config.cpp item_combination.cpp char_cards.cpp  minilzo.c main.cpp  2> /dev/null > Depend
    root@freebsd11:/usr/src/best_source/Srcs/Server/game/src # gmake clean
    root@freebsd11:/usr/src/best_source/Srcs/Server/game/src # gmake -j20
    GCC7 COMPILE: BattleArena.cpp
    GCC7 COMPILE: FSM.cpp
    GCC7 COMPILE: MarkConvert.cpp
    GCC7 COMPILE: MarkImage.cpp
    GCC7 COMPILE: MarkManager.cpp
    GCC7 COMPILE: OXEvent.cpp
    GCC7 COMPILE: TrafficProfiler.cpp
    GCC7 COMPILE: acce.cpp
    GCC7 COMPILE: ani.cpp
    GCC7 COMPILE: arena.cpp
    GCC7 COMPILE: banword.cpp
    GCC7 COMPILE: battle.cpp
    GCC7 COMPILE: blend_item.cpp
    GCC7 COMPILE: block_country.cpp
    GCC7 COMPILE: buffer_manager.cpp
    GCC7 COMPILE: building.cpp
    GCC7 COMPILE: castle.cpp
    GCC7 COMPILE: char.cpp
    GCC7 COMPILE: char_affect.cpp
    GCC7 COMPILE: char_battle.cpp
    GCC7 COMPILE: char_change_empire.cpp
    GCC7 COMPILE: char_horse.cpp
    GCC7 COMPILE: char_item.cpp
    GCC7 COMPILE: char_manager.cpp
    GCC7 COMPILE: char_quickslot.cpp
    GCC7 COMPILE: char_resist.cpp
    GCC7 COMPILE: char_skill.cpp
    GCC7 COMPILE: char_state.cpp
    GCC7 COMPILE: PetSystem.cpp
    GCC7 COMPILE: cmd.cpp
    GCC7 COMPILE: cmd_emotion.cpp
    GCC7 COMPILE: cmd_general.cpp
    GCC7 COMPILE: cmd_gm.cpp
    GCC7 COMPILE: cmd_oxevent.cpp
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: error: no matching function for call to 'hash_value(const VID&)'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/intrusive_ptr.hpp:16:0,
                     from event.h:10,
                     from stdafx.h:39,
                     from char_skill.cpp:1:
    /usr/local/include/boost/smart_ptr/intrusive_ptr.hpp:354:33: note: candidate: template<class T> std::size_t boost::hash_value(const boost::intrusive_ptr<T>&)
     template< class T > std::size_t hash_value( boost::intrusive_ptr<T> const & p )
                                     ^~~~~~~~~~
    /usr/local/include/boost/smart_ptr/intrusive_ptr.hpp:354:33: note:   template argument deduction/substitution failed:
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const boost::intrusive_ptr<T>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/functional/hash.hpp:6:0,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/hash.hpp:270:57: note: candidate: template<class T> typename boost::hash_detail::basic_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::basic_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:270:57: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::basic_numbers<T>::type boost::hash_value(T) [with T = VID]':
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:270:57: error: no type named  type' in 'struct boost::hash_detail::basic_numbers<VID>'
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:276:56: note: candidate: template<class T> typename boost::hash_detail::long_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::long_numbers<T>::type hash_value(T v)
                                                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:276:56: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::long_numbers<T>::type boost::hash_value(T) [with T = VID]':
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:276:56: error: no type named  type' in 'struct boost::hash_detail::long_numbers<VID>'
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:282:57: note: candidate: template<class T> typename boost::hash_detail::ulong_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::ulong_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:282:57: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::ulong_numbers<T>::type boost::hash_value(T) [with T = VID]':
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:282:57: error: no type named  type' in 'struct boost::hash_detail::ulong_numbers<VID>'
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:289:9: note: candidate: template<class T> typename boost::enable_if<boost::is_enum<T>, unsigned int>::type boost::hash_value(T)
             hash_value(T v)
             ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:289:9: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::enable_if<boost::is_enum<T>, unsigned int>::type boost::hash_value(T) [with T = VID]':
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:289:9: error: no type named 'type' in 'struct boost::enable_if<boost::is_enum<VID>, unsigned int>'
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:296:36: note: candidate: template<class T> std::size_t boost::hash_value(T* const&)
         template <class T> std::size_t hash_value(T* const& v)
                                        ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:296:36: note:   template argument deduction/substitution failed:
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'T* const' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/functional/hash.hpp:6:0,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/hash.hpp:384:24: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(const T (&)[N])
         inline std::size_t hash_value(const T (&x)[N])
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:384:24: note:   template argument deduction/substitution failed:
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'const T [N]' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/functional/hash.hpp:6:0,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/hash.hpp:390:24: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(T (&)[N])
         inline std::size_t hash_value(T (&x)[N])
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:390:24: note:   template argument deduction/substitution failed:
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   mismatched types 'T [N]' and 'const VID'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/functional/hash.hpp:6:0,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/hash.hpp:397:24: note: candidate: template<class Ch, class A> std::size_t boost::hash_value(const std::__cxx11::basic_string<Ch, std::char_traits<_CharT>, A>&)
         inline std::size_t hash_value(
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:397:24: note:   template argument deduction/substitution failed:
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::__cxx11::basic_string<Ch, std::char_traits<_CharT>, A>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    In file included from /usr/local/include/boost/functional/hash.hpp:6:0,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/hash.hpp:404:57: note: candidate: template<class T> typename boost::hash_detail::float_numbers<T>::type boost::hash_value(T)
         typename boost::hash_detail::float_numbers<T>::type hash_value(T v)
                                                             ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:404:57: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/hash.hpp: In substitution of 'template<class T> typename boost::hash_detail::float_numbers<T>::type boost::hash_value(T) [with T = VID]':
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30:   required from 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:404:57: error: no type named  type' in 'struct boost::hash_detail::float_numbers<VID>'
    /usr/local/include/boost/functional/hash/extensions.hpp: In instantiation of 'std::size_t boost::hash<T>::operator()(const T&) const [with T = VID; std::size_t = unsigned int]':
    /usr/local/include/boost/unordered/detail/implementation.hpp:2167:18:   required from 'static SizeT boost::unordered::detail::prime_policy<SizeT>::apply_hash(const Hash&, const T&) [with Hash = boost::hash<VID>; T = VID; SizeT = unsigned int]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3107:34:   required from 'std::size_t boost::unordered::detail::table<Types>::hash(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; std::size_t = unsigned int; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/detail/implementation.hpp:3126:41:   required from 'boost::unordered::detail::table<Types>::node_pointer boost::unordered::detail::table<Types>::find_node(boost::unordered::detail::table<Types>::const_key_type&) const [with Types = boost::unordered::detail::map<std::allocator<std::pair<const VID, unsigned int> >, VID, unsigned int, boost::hash<VID>, std::equal_to<VID> >; boost::unordered::detail::table<Types>::node_pointer = boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> >*; boost::unordered::detail::table<Types>::const_key_type = const VID]'
    /usr/local/include/boost/unordered/unordered_map.hpp:1484:12:   required from 'boost::unordered::unordered_map<K, T, H, P, A>::iterator boost::unordered::unordered_map<K, T, H, P, A>::find(const key_type&) [with K = VID; T = unsigned int; H = boost::hash<VID>; P = std::equal_to<VID>; A = std::allocator<std::pair<const VID, unsigned int> >; boost::unordered::unordered_map<K, T, H, P, A>::iterator = boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const VID, unsigned int> > >; boost::unordered::unordered_map<K, T, H, P, A>::key_type = VID]'
    char_skill.cpp:4060:103:   required from here
    /usr/local/include/boost/functional/hash/hash.hpp:410:24: note: candidate: std::size_t boost::hash_value(std::type_index)
         inline std::size_t hash_value(std::type_index v)
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/hash.hpp:410:24: note:   no known conversion for argument 1 from 'const VID' to 'std::type_index'
    In file included from /usr/local/include/boost/functional/hash/hash.hpp:572:0,
                     from /usr/local/include/boost/functional/hash.hpp:6,
                     from /usr/local/include/boost/unordered/unordered_map.hpp:18,
                     from /usr/local/include/boost/unordered_map.hpp:17,
                     from char.h:4,
                     from char_skill.cpp:7:
    /usr/local/include/boost/functional/hash/extensions.hpp:67:17: note: candidate: template<class A, class B> std::size_t boost::hash_value(const std::pair<_T1, _T2>&)
         std::size_t hash_value(std::pair<A, B> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:67:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::pair<_T1, _T2>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:76:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::vector<_Tp, _Alloc>&)
         std::size_t hash_value(std::vector<T, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:76:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::vector<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:82:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::__cxx11::list<_Tp, _Alloc>&)
         std::size_t hash_value(std::list<T, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:82:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::__cxx11::list<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:88:17: note: candidate: template<class T, class A> std::size_t boost::hash_value(const std::deque<_Tp, _Alloc>&)
         std::size_t hash_value(std::deque<T, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:88:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::deque<_Tp, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:94:17: note: candidate: template<class K, class C, class A> std::size_t boost::hash_value(const std::set<_Key, _Compare, _Alloc>&)
         std::size_t hash_value(std::set<K, C, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:94:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::set<_Key, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:100:17: note: candidate: template<class K, class C, class A> std::size_t boost::hash_value(const std::multiset<_Key, _Compare, _Alloc>&)
         std::size_t hash_value(std::multiset<K, C, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:100:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::multiset<_Key, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:106:17: note: candidate: template<class K, class T, class C, class A> std::size_t boost::hash_value(const std::map<_Key, _Tp, _Compare, _Alloc>&)
         std::size_t hash_value(std::map<K, T, C, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:106:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:112:17: note: candidate: template<class K, class T, class C, class A> std::size_t boost::hash_value(const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
         std::size_t hash_value(std::multimap<K, T, C, A> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:112:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:118:17: note: candidate: template<class T> std::size_t boost::hash_value(const std::complex<_Tp>&)
         std::size_t hash_value(std::complex<T> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:118:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::complex<_Tp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:128:17: note: candidate: template<class T, unsigned int N> std::size_t boost::hash_value(const std::array<_Tp, _Nm>&)
         std::size_t hash_value(std::array<T, N> const& v)
                     ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:128:17: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::array<_Tp, _Nm>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:163:24: note: candidate: template<class ... T> std::size_t boost::hash_value(const std::tuple<_Tps ...>&)
         inline std::size_t hash_value(std::tuple<T...> const& v)
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:163:24: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::tuple<_Tps ...>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:193:24: note: candidate: template<class T> std::size_t boost::hash_value(const std::shared_ptr<_Tp>&)
         inline std::size_t hash_value(std::shared_ptr<T> const& x) {
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:193:24: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::shared_ptr<_Tp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:198:24: note: candidate: template<class T, class Deleter> std::size_t boost::hash_value(const std::unique_ptr<_Tp, _Dp>&)
         inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
                            ^~~~~~~~~~
    /usr/local/include/boost/functional/hash/extensions.hpp:198:24: note:   template argument deduction/substitution failed:
    /usr/local/include/boost/functional/hash/extensions.hpp:262:30: note:   'const VID' is not derived from 'const std::unique_ptr<_Tp, _Dp>'
                 return hash_value(val);
                        ~~~~~~~~~~^~~~~
     

     

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.