快速设置:我想在我的程序中传递字符串作为指针和大小。我有一个 String 类和一个用于构造文字字符串的用户定义文字:
struct String { const char *ptr; size_t sz; };
inline constexpr String operator "" _string(const char *s, size_t sz) {
return {s, sz};
}
int main() {
auto s = "hello"_string;
s.ptr[0]; //<-- is this access guaranteed to work?
}
标准是否指定传递给我的用户定义文字运算符的参数具有静态持续时间?即上面的代码实际上相当于写:
int main() {
String s{"hello", 5};
}
或者当我使用用户定义的文字时,编译器/链接器是否允许我留下一个悬空指针?
(N4527 的第 2.13.8 节似乎没有就用户定义的字符串文字运算符的参数的存储类主题发表任何内容。任何指向标准适当部分的指针都将不胜感激。)