title: Variable templates only available with C++14
body: <p>I have declared a struct which is:</p>
  
  <pre><code>template &lt;typename T&gt;
  struct key{
  
  T value;            
  uint64_t less;  
  uint64_t equal; 
  uint64_t greater;
  
  };
  </code></pre>
  
  <p>I am using an unordered_map to store the address of objects of the key type and their corresponding values. The syntax and declaration of the unordered_map is as:</p>
  
  <pre><code>template&lt;typename T&gt;
  std::unordered_map&lt;key&lt;T&gt; *,int32_t&gt; htable;
  </code></pre>
  
  <p>When I compile my program g++ throws a warning: variable templates only available with -std=c++14 or -std=gnu++14
  My question is will my program be compatible with C++11 or do I absolutely have to specify the -std=c++14 flag? Is the above usage uncommon? What can I do to make it C++11 compatible? I need to hash the address of the key object and store information associated with it but key is a generic type and I don't know another way to implement this.</p>