Error: hash_map does not name a type
<p>I am receiving an error message for not naming a type, as follows: </p>

<p><code>error: ‘hash_map’ does not name a type
typedef hash_map&lt;const char*,LexUnitX*,MLexUnitFunctions&gt; MLexUnit;</code></p>

<p>The code in question creates a custom <code>hash_map</code> type using a LexUnitX-type struct as shown below: </p>

<pre><code>typedef struct {
    int iLexUnit;                                   // lexical unit unique identifier
    const char *strLexUnit;                     // lexical unit as an array of characters (a word, a syllable, etc.)
    VLexUnit vLexUnitPronunciations;            // alternative pronunciations of the lexical unit
} LexUnitX;
</code></pre>

<p>Code for the VLexUnit vector; vector of <code>LexUnit</code>-type pointers</p>

<pre><code>// lexical unit transcription
typedef struct {
   int iLexUnit;                            // lexical unit id (unique correspondence id &lt;&gt; lexical unit in str format)
   int iLexUnitPron;                        // lexical unit id (unique correspondence id &lt;&gt; lexical unit + pronunciation)
   int iIndex;                              // index of the lexical unit within the lexicon file
   vector&lt;int&gt; vPhones;                 // phonetic transciption 
   unsigned char iPronunciation;        // pronunciation number
   unsigned char iType;                 // standard / filler / sentence delimiter
   float fProbability;                  // pronunciation probability (respect to alternative ones of the same lex unit)
   float fInsertionPenalty;         // penalty for inserting this lexical unit during decoding
} LexUnit;  

class LexiconManager;

typedef vector&lt;LexUnit*&gt; VLexUnit;
</code></pre>

<p>and finally the <code>hash_map</code> type to map characters to their corresponding data structure: </p>

<pre><code>// maps lexical units as strings of characters to their corresponding data structure
#if defined __linux__ || defined __APPLE__ || __MINGW32__
typedef std::tr1::unordered_map&lt;const char*,LexUnitX*,MLexUnitFunctions,MLexUnitFunctions&gt; MLexUnit;
#elif _MSC_VER &lt; 1700
typedef hash_map&lt;const char*,LexUnitX*,MLexUnitFunctions&gt; MLexUnit;
#else
    #error "unsupported platform"
#endif
</code></pre>

<p>I am not sure what exactly I am doing wrong syntatically here to cause the error. </p>