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 *'
}
コードはVC++2012年11月CTPでコンパイルされました。
§2.14.15文字列リテラル、セクション7
狭い文字列リテラルの型は「arrayofnconst char」です。ここで、nは以下に定義する文字列のサイズであり、静的な保存期間があります。
なぜf("Hello")
大丈夫ですか?