是否可以制作类类型,即:
它们会是什么样子?
这个问题对于开发,比如std::variant
- 或类似std::tuple
- 类似的问题是有意义的。
在查看this article之后出现了这个问题。
答案 0 :(得分:1)
回答我认为你问题的核心:
这个问题对于开发,比如std :: variant-like或者是有意义的 std :: tuple-like class
这里有3种 class-types 值得关注。
以下假设分配&移动/复制存在构造后缀。我将非平凡的操作称为克隆 - :
所有者类型:这些是Movable&可克隆(深拷贝或浅拷贝是可以做出的选择)
陈规定型的例子是std::unique_ptr, std::shared_ptr
常规类型(类似int):这些是Movable&拷贝能力。 陈规定型的例子是int,std :: vector。 有关这些类型的更多详细信息,请访问What is a "Regular Type" in the context of move semantics?&在编程元素中。
其他类型(函数,互斥体等):这些类型拒绝被放入上面的一个干净的类中,例如。函数可以指代指针,带有捕获的lambda等。
当你可以创建这样的类时,关于所有其他可复制/可移动的组合,我认为它们更像是好奇心而不是你将在任何有用场景中看到的东西。 / p>
我已将std :: vector放在常规类型而不是所有者类型中,即使std::vector
管理内存,因为其界面设计为接近一个普通的类型。您通常可以为表面非常规的类型设计 Regular 接口。在这种情况下,如果使用常规接口,则可以更轻松地推理代码。
答案 1 :(得分:-2)
你需要在5上更清楚。
琐碎意味着(除其他外)不是用户提供的。因此,简单地明确地编写默认实现需要从简单到非平凡的东西。