title: printf %s const char*
body: <p><code>printf</code>'s <code>%</code> conversion specifier expects a pointer to a <code>char</code> array. Note the lack of <code>const</code>. I can see the reasons for this in C, and since C++ incorporates the C99 standard, this wouldn't change. However, if I'm writing my own <code>printf</code>, can I safely convert the argument to <code>const char*</code> instead?:</p>
  
  <pre><code>case 's' :
      ptr = va_arg(va, const char*);
      _puts(ptr, strlen(ptr));
      break;
  </code></pre>
  
  <p>Would this have any unintended semantics (note: I'm not asking about undefined behavior, because such an implementation would not be conforming anyway)?</p>