title: Why doesn't these unicode variable names work with -fextended-identifiers? «, » and ≠
body: <p>I heard that it is possible to use unicode variable names using the <code>-fextended-identifiers</code> flag in <code>gcc</code>. So I made a test program in C++ but it does not compile.</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #define ¬ !
  #define ≠ !=
  #define « &lt;&lt;
  #define » &gt;&gt;
  
  /* uniq: remove duplicate lines from stdin */
  int main() {
      std::string s;
      std::string t = "";
      while (cin » s) {
          if (s ≠ t)
              cout « s;
          t = s;
      }
      return 0;
  }
  </code></pre>
  
  <p>I get these errors:</p>
  
  <pre><code>g++ -fextended-identifiers -g3 -o a main.cpp
  main.cpp:10:3: error: stray ‘\342’ in program
     if (s ≠ t)
     ^
  main.cpp:10:3: error: stray ‘\211’ in program
  main.cpp:10:3: error: stray ‘\240’ in program
  main.cpp:11:4: error: stray ‘\302’ in program
      cout « s;
      ^
  main.cpp:11:4: error: stray ‘\253’ in program
  </code></pre>
  
  <p>What is going on? Aren't these macro names supposed to work with <code>-fextended-identifiers</code>?</p>