Which requirements must be met by this std::unordered_map key

Question | Mar 16, 2017 | rparekh 

The std::unordered_map< key , value > is a hash table based key-value (or map) container. In theory, searching a single element (as opposed to a range) in a hash table based data structure is faster than a tree based data structure (e.g std::map). Let's take an example:

struct Key {
  std::string m_str;
  int m_i;
}; 
// Define the std::unordered_map
std::unordered_map<Key, std::string> umap; 

// Insert a key-value pair
umap[{"One",1}] = "Value-One";

The user defined type (class/struct) Key must meet some requirements in order to be used as a key in std::unordered_map. What are those requirements?

Select from given choices: