首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::string_view是可以复制的吗?

std::string_view是可以复制的吗?
EN

Stack Overflow用户
提问于 2018-09-01 17:38:55
回答 1查看 781关注 0票数 9

对于某些类型,标准明确声明它们是微不足道的可复制的。例如,std::chrono::day就是这样一种类型。

但是,对std::string_view来说,没有这样的说法。然而,它似乎满足了琐碎的可复制性的要求(或者我可能忽略了什么?)

问题是,我能不能相信std::string_view是微不足道的可复制的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-01 17:47:54

我相信这是很明显的暗示。

[string.view.template]将类模板声明为(我省略了与这个问题严格相关的所有内容):

代码语言:javascript
复制
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]说:

为了说明起见,一些子子句为符合类的外部规范的类的私有成员提供了有代表性的声明和语义要求。这些成员的声明后面是只以公开结尾的注释,如下所示:

代码语言:javascript
复制
streambuf* sb;  // exposition only

实现可以使用提供等效可观察行为的任何技术。

std::string_view是否确切地包含char const*size_t类型的两个成员还没有指定--但是类必须具有与这样一个实现的行为相同的可观察行为。而这样的实施将是微不足道的抄袭。

此外,许多成员函数被声明为constexpr,在C++17中它本身需要少量的销毁(否则,该注释将是格式错误的NDR)。

现在有一项建议,P2251,继续并明确声明basic_string_view (和span)是微不足道的可复制的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52130667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档