由于Qt容器的隐含共享原理,
Qt bug #54685已经向Qt开发人员明确确认,只有移动类型
不支持(并且永远不会).
当您将一个Qt容器复制到另一个容器时,您不会做深层拷贝 – 容器在内部共享其内容.只有当在容器上调用修改函数时,它才会分离,创建自己的本地内容副本.这样允许Qt容器通过信号和插槽(这是必须的值)传递,而不会使性能下降.
当包含的类型是只移动的时候,这当然是不可能的.而通过值传递容器的能力(不复制其内容)是Qt的元对象机制的基础,所以我不认为它可以重新设计. Qt API依赖于隐式共享,并通过值传递容器,即使只有通过引用传递唯一的容器,所以没有简单的出路.