title: Is #pragma once part of the C++11 standard?
body: <p>Traditionally, the standard and portable way to avoid multiple header inclusions in C++ was/is  to use the <code>#ifndef - #define - #endif</code>pre-compiler directives scheme also called <a href="http://en.wikipedia.org/wiki/Include_guard">macro-guard scheme</a> (see code snippet below).</p>
  
  <pre><code>#ifndef MY_HEADER_HPP
  #define MY_HEADER_HPP
  ...
  #endif
  </code></pre>
  
  <p>In most implementations/compilers (see picture below) however, there's a more "elegant" alternative that serves the same purpose as the macro-guard scheme called <a href="http://en.wikipedia.org/wiki/Pragma_once"><code>#pragma once</code></a>. <code>#pragma once</code> has several advantages compared to the macro-guard scheme, including less code, avoidance of name clashes, and sometimes improved compile speed.</p>
  
  <p><img src="https://i.stack.imgur.com/qDohP.png" alt="enter image description here"></p>
  
  <p>Doing some research, I realized that although <code>#pragma once</code> directive is supported by almost all known compilers, there's a turbidness on whether <code>#pragma once</code> directive is part of the C++11 standard or not.</p>
  
  <h2><strong>Questions:</strong></h2>
  
  <ul>
  <li>Could someone clarify whether <code>#pragma once</code> directive is part of the C++11 standard or not?</li>
  <li>If it's not part of the C++11 standard, are there any plans on including it on later releases (e.g., C++14 or later)?</li>
  <li>It would also be nice if someone could further elaborate on the advantages/disadvantages in using either one of the techniques (i.e., macro-guard versus <code>#pragma once</code>).</li>
  </ul>