title: Does <algorithm> define a macro X?
body: <p>I tried to compile <a href="http://cpp.sh/8vrep" rel="noreferrer">the code</a> with option C++14:</p>
  
  <pre><code>#define X static_cast&lt;double&gt;(2)
  #include &lt;algorithm&gt;
  // if you change the two lines, no error occurs
  
  int main()
  {
      return 0;
  }
  </code></pre>
  
  <p>But I get error after X:</p>
  
  <blockquote>
    <p>error: expected ',' or '...'</p>
  </blockquote>
  
  <p>I do not get error with option C++98. With my gcc version 4.8.4, I don't get error, but with 5.4.0 I do. Is this a bug? Do I do something wrong?</p>