title: invalid pure specifier (only `= 0' is allowed) before ‘;’ token error with g++
body: <p>I have this C++ code.</p>
  
  <pre><code>#include &lt;string&gt;
  #define IC(E) virtual const E const = NULL; 
  
  struct IDumpable
  {
      IC(std::string ToDumpString());
  };
  
  class Hello : public IDumpable
  {
  public:
      const std::string ToDumpString() const {
          std::string a("hello"); return a;
      }
  };
  
  int main()
  {
      Hello hello;
      hello.ToDumpString();
  }
  </code></pre>
  
  <p>It compiles/runs fine with MSVC, but I got <code>invalid pure specifier (only '= 0' is allowed) before ‘;’ token</code> error with g++.</p>
  
  <p>What's wrong with it?</p>