title: constexpr keywork doesn't affect on code generation
body: <p>I wrote a simple program:</p>
  
  <pre><code>constexpr int strlen_c(char const* s)
  {
      return *s ? 1 + strlen_c(s + 1) : 0;
  }
  
  int main()
  {
      return strlen_c("hello world");
  }
  </code></pre>
  
  <p>I expected that the compiler optimizes the function and evaluates its result in compile time. But actually the generated machine code evaluates the result in a loop:</p>
  
  <pre><code>    mov     edx, offset aHelloWorld ; "hello world"
  loc_408D00:
      add     edx, 1
      mov     eax, edx
      sub     eax, offset aHelloWorld ; "hello world"
      cmp     byte ptr [edx], 0
      jnz     short loc_408D00
      leave
      retn
  </code></pre>
  
  <p>The program is being compiled with g++ version 5.3 with flags <code>-std=c++11 -Ofast -O2</code>. The same result I obtain in Visual Studio 2013, and g++ 4.9.</p>
  
  <p><strong>Quaestion</strong> what is the reason the compiler couldn't optimize the given code?</p>