void f(char* p)
{}
int main()
{
f("Hello"); // OK
auto p = "Hello";
f(p); // error C2664: 'void f(char *)' : cannot convert parameter 1
// from 'const char *' to 'char *'
}
Код был скомпилирован с VС++ Nov 2012 CTP.
§2.14.15 Строковые литералы, раздел 7
Узкий строковый литерал имеет тип "массив из n const char", где n размер строки, как определено ниже, и имеет статическое хранилище длительность.
Почему f("Hello")
ОК?