[英]C++ 11 Move Semantics and STL Containers
关于移动语义和容器:
我知道当元素类型中定义了移动操作时,STL容器会利用移动。 但是它如何知道元素是否定义了移动操作?
为什么STL容器无论如何都不会在元素上调用std :: move(),无论元素是否定义了移动操作? 我问这个是因为我知道你可以在对象上调用std :: move(),即使它的类型没有定义任何移动操作。
谢谢。
长话短说,这正是他们所做的,如果它能够移动或只是复制,调用std::move
而不关心。
值得注意的是,一些提供强异常保证的函数,比如std::vector::resize
,会调用鲜为人知的std::move_if_nothrow
而不是std::move
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.