title: Where is static_assert implemented?
body: <p>The way <code>static_assert</code> was <a href="http://loki-lib.cvs.sourceforge.net/loki-lib/loki/include/loki/static_check.h?view=markup" rel="nofollow">implemented</a> in the <a href="http://loki-lib.sourceforge.net/" rel="nofollow">Loki</a> library (where it was actually a pre-processor macro called <code>STATIC_CHECK</code>), it could be used as follows:</p>
  
  <pre><code>STATIC_CHECK(myCondition, My_Error_Message); 
  </code></pre>
  
  <p>Note that <code>My_Error_Message</code> must be a valid identifier. </p>
  
  <p>I am wondering how <a href="http://en.cppreference.com/w/cpp/language/static_assert" rel="nofollow"><code>static_assert</code></a> is implemented for the <code>C++11</code> standard to take a string literal argument for the error message.</p>
  
  <p>I decided to look into the <code>type_traits</code> include file, which is located in <code>/usr/include/c++/4.8</code> on my Ubuntu 14.04 with g++ 4.8.2. To my surprise, I found only usages of <code>static_assert</code> there, but not the definition (nor pre-processor macro). I did not find it in the files included from <code>type_traits</code> either.</p>
  
  <p>So, where do I look for the implementation of <code>static_assert</code>?</p>