Value category is not lifetime
C++值类别与生命周期完全没有关系
Here’s another slogan that needs more currency:
Value category is not lifetime.
What I mean by this mantra is probably best shown by example.
Two examples of a common C++ problem
Suppose we design a String
class that looks like this:
class String {
std::string s_;
public:
explicit String(const char *s) : s_(s) {}
operator std::string_view() const { return s_; }
};
And suppose we design a TokenIterator
class that looks like this:
class TokenIterator {
const char *s_;
public:
explicit TokenIterator(const std::string& s) : s_(s.data()) {}
auto& operator++() {
// complicated logic to advance `s_` through the string
}
};