Affected subclause: [lex.string]
 Change: String literals made const
.   
The type of a 
string-literal is changed
from “array of 
char”
to “array of 
const char”
.The type of a UTF-8 string literal is changed
from “array of 
char”
to “array of 
const char8_t”
.The type of a UTF-16 string literal is changed
from “array of 
some-integer-type”
to “array of 
const char16_t”
.The type of a UTF-32 string literal is changed
from “array of 
some-integer-type”
to “array of 
const char32_t”
.The type of a wide string literal is changed
from “array of 
wchar_t”
to “array of 
const wchar_t”
.Rationale: This avoids calling an inappropriate overloaded function,
which might expect to be able to modify its argument
.   Effect on original feature: Change to semantics of well-defined feature
.   Difficulty of converting: Syntactic transformation
.  The fix is to add a cast:
char* p = "abc";                
void f(char*) {
  char* p = (char*)"abc";       
  f(p);
  f((char*)"def");              
}
 How widely used: Programs that have a legitimate reason to treat string literal objects
as potentially modifiable memory are probably rare
.