我刚遇到了一些误解:至少在libc++实现中,std::experimental::string_view有以下简洁的实现:
template <class _CharT, class _Traits....>
class basic_string_view {
public:
typedef _CharT value_type;
...
template <class _Allocator>
basic_string_view(const basic_string<_CharT, _Traits, _Allocator>& str):
__data(str.data()), __size(str.size())
{
}
private:
const value_type* __data;
size_type __size;
};
这个实现是否意味着,如果我们将rvalue表达式传递给此构造函数,在构造完成后使用__data会得到未定义的行为?
string_view
只是一个被美化了的引用。 - Rapptz