我相信这是强烈的暗示。
[string.view.template]
将类模板声明为(我将省略所有与此问题无关的内容):
template<class charT, class traits = char_traits<charT>>
class basic_string_view {
public:
// types
using const_pointer = const value_type*;
using size_type = size_t;
private:
const_pointer data_; // exposition only
size_type size_; // exposition only
};
以及
[objects.within.classes]
为了说明,有些子类为满足类的外部规范的类的私有成员提供了代表性声明和语义需求。这些成员的声明后面有一条注释,仅以说明结尾,如:
streambuf* sb; // exposition only
std::string_view
正好包含两个类型的成员
char const*
和
size_t
或不是未指定的-但类必须具有与此类实现的行为相同的可观察行为。而且这样的实现很容易被复制。
此外,还声明了许多成员函数
constexpr
它本身在C++ 17中需要微小的破坏(否则,这个注释将是不正确的NDR)。
现在有个提议,
P2251
,并明确指出
basic_string_view
(和
span
)都是可以复制的。