title: Clang unknown class name 'exception'
body: <p>For some odd reason I am having difficulties throwing an exception in C++. I throw without catching <code>std::invalid_argument</code> from the stdexcept header file. I have no real intention of catching as i want the application to fail anyway if the error occurs. </p>
  
  <p>It seemed to be working fine until I #included the function definition class into the namespace of the header declaration. It was added outside of the namespace prior since they are template definitions and I wanted to separate the header from its definition; however, I realized this caused a subtle issue that I did not realized until only recently. </p>
  
  <p>Is their something I am missing? I am using clang btw</p>
  
  <pre><code>Project Compilation
  .
  .
  .
  .
  .
  Compiling CPP file TrieTest.cpp ...
  In file included from TrieTest.cpp:4:
  In file included from ./Trie.hpp:62:
  In file included from ./Trie.cpp:2:
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/stdexcept:55:30: error: unknown class name 'exception'; did you mean
        '::std::exception'?
    class logic_error : public exception 
                               ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/exception:60:9: note: '::std::exception' declared here
    class exception
          ^
  In file included from TrieTest.cpp:4:
  In file included from ./Trie.hpp:62:
  In file included from ./Trie.cpp:2:
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/stdexcept:112:32: error: expected class name
    class runtime_error : public exception 
                                 ^
  2 errors generated.
  </code></pre>
  
  <p><strong>EDIT:</strong> A bit of the src
  Also I compile with
  clang++ -Wall -Wextra -g -std=c++11 TrieTest.cpp -o TrieTest;</p>
  
  <p>"Trie.h"</p>
  
  <pre><code>#ifndef COM_WORDGAME_UTILITY_TRIE_HPP
  #define COM_WORDGAME_UTILITY_TRIE_HPP
  #include &lt;string&gt;
  using std::string;
  
  namespace wordgame_utility{
  template&lt;typename value&gt;
  class Trie{
  
        ...Trie Function Declarations
  
  };
  
  //The compiler may not complain initialliy however
  //Templates cause visibility issues with user code and is normally defined in the header
  //this is a work around 
  #include "Trie.cpp"
  }
  
  #endif
  </code></pre>
  
  <p>"Trie.cpp" head -n 8</p>
  
  <pre><code>#include "Trie.hpp"
  #include &lt;stdexcept&gt;
  
  using namespace wordgame_utility;
  
  template&lt;typename value&gt;
  using TrieNode = typename Trie&lt;value&gt;::TrieNode;
  ...Trie Function Definitions
  </code></pre>