Learning C++

This was definitely a tough one for me. Unlike most modern programming languages, C++ is absolutely terrible at error reporting. This combined with the complexity of the language made it pretty hard to get even the simplest things done.
The experience that sticks with me most is wanting to create an unordered_set of vec2's, which results in the following error:


'std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare(const std::_Uhash_compare<_Kty,_Hasher,_Keyeq> &)': attempting to reference a deleted function
        

Deleted function? I don't remember deleting a function, and I'm definitely not deleting anything in std.
As it turns out this is C++ saying No hashing function is implemented for type vec2. After figuring out how to implement a hashing function you'll be greeted with the following error:


binary '==': 'const _Ty' does not define this operator or a conversion to a type acceptable to the predefined operator
        

This one's a bit more readable, something hasn't implemented operator== even though it's required by some template.
As it turns out you need to implement two things to get hashing to work for your custom data type:

Not too bad since I'm somewhat familiar with generics from C#, but why doesn't C++ have an equivalent to interfaces so it can actually tell me why it fails?

Eventually I did start memorizing some of the weirdness and programming in C++ started becoming somewhat comfortable.