std::string_view
在以下场景中使用:
struct A : public std::exception{
A (const char* c) : v_(c){}
const char* what() const noexcept override;
private:
std::string_view v_;
};
上面的想法很好用,现在 copy-ctor 将默认为noexcept
(这对于异常类型非常有用!) - 并且字符串也在调用站点“验证”。
然而,剩下的事情是语义上 astring_view
不保证为零终止(尽管在这种情况下,我们编写了代码,所以它会是 - 最好是为这种特殊情况保证,就像它只有构造函数一样我们实际使用的。
我正在考虑以下类似的方法是否是一个很好的解决方法?
struct c_string_view {
c_string_view(const char* c) : sv_{c}{};
const std::string_view sv_;
};
但我想知道其他人是否有这个问题(以及他们做了什么),或者我是否忽略了一些简单的东西?