jms*_*jms 12 c++ string-literals constexpr c++11
我一直想知道如果有之间指出什么是任何差别ptrToArray,并ptrToLiteral在下面的例子:
constexpr char constExprArray[] = "hello";
const char* ptrToArray = constExprArray;
const char* ptrToLiteral = "hello";
Run Code Online (Sandbox Code Playgroud)
constExprArray和两个"hello"文字都是编译时间常数左值正确吗?And*_*zos 22
字符串文字和char的constexpr数组几乎相同.指向其中一个的指针是地址常量表达式.在常量表达式中,允许在其元素上进行左值到右值的转换.它们都具有静态存储持续时间.我所知道的唯一区别是字符串文字可以初始化数组,而constexpr数组不能:
constexpr char a[] = "hello";
constexpr char b[] = a; // ill-formed
constexpr char b[] = "hello"; // ok
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,您可以将数组包装在一个文字类型中.我们目前正在考虑标准化这样一个将被调用std::string_literal或类似的包装器,但是现在你必须手动完成.
| 归档时间: |
|
| 查看次数: |
9857 次 |
| 最近记录: |