title: construct an unordered_map with value being a pair of string and object type
body: <p>consider the following code:</p>
  
  <pre><code>namespace fruit {
      struct apple{
          ...
      };
  }
  
  namespace language{
      struct english{
          ...
      };
  }
  </code></pre>
  
  <p>I want to do something like:</p>
  
  <pre><code>std::unordered_map&lt;std::string, ? &gt; mymap = { 
      {"paul", {"like", fruit::apple} },
      {"jonas", {"like", language::english} }
  };
  </code></pre>
  
  <p>the key of my map is a string and the value should be such a pair <code>&lt;string, ? &gt;</code>.<br>
  What type should I give as value for my map? I think things like union or functor can be used to solve the problem, but how? thanks in advance.</p>