title: Purpose of Trigraph sequences in C++?
body: <p>According to C++'03 Standard 2.3/1:</p>
  
  <blockquote>
    <p>Before any other processing takes place, each occurrence of one of the following sequences of three characters (“trigraph sequences”) is replaced by the single character indicated in Table 1. </p>
  
  <pre><code>----------------------------------------------------------------------------
  | trigraph | replacement | trigraph | replacement | trigraph | replacement |
  ----------------------------------------------------------------------------
  | ??=      | #           | ??(      | [           | ??&lt;      | {           |
  | ??/      | \           | ??)      | ]           | ??&gt;      | }           |
  | ??’      | ˆ           | ??!      | |           | ??-      | ˜           |
  ----------------------------------------------------------------------------
  </code></pre>
  </blockquote>
  
  <p>In real life that means that code <code>printf( "What??!\n" );</code> will result in printing <code>What|</code> because <code>??!</code> is a trigraph sequence that is replaced with the <code>|</code> character.</p>
  
  <p><strong>My question is what purpose of using trigraphs?</strong> Is there any practical advantage of using trigraphs?</p>
  
  <p><strong>UPD</strong>: In answers was mentioned that some European keyboards don't have all the punctuation characters, so non-US programmers have to use trigraphs in everyday life?</p>
  
  <p><strong>UPD2</strong>: Visual Studio 2010 has trigraph support turned off by default.</p>