相关疑难解决方法(0)

一个聪明的编译器可以执行std :: move所做的所有事情,而不是它是语言的一部分吗?

这是一个理论上的问题,但是虽然我对std :: move有一些基本的了解,但我还是不确定它是否为语言提供了一些额外的功能,而这些功能在理论上无法通过supersmart编译器实现.我知道代码如下:

{
  std::string s1="STL";
  std::string s2(std::move(s1));
  std::cout << s1 <<std::endl;
} 
Run Code Online (Sandbox Code Playgroud)

是一种新的语义行为,而不仅仅是性能糖.:D但是我想在执行std :: move(x)之后没有人会使用var x.另外对于仅可移动的数据(std :: unique_ptr <>,std :: thread),如果声明类型是可移动的,那么编译器会自动执行移动构造和清除旧变量吗?再次,这意味着将在程序员后面生成更多的代码(例如,现在你可以计算cpyctor和movector调用,使用automagic std :: moving你不能这样做).

c++ move std c++11

3
推荐指数
1
解决办法
394
查看次数

标签 统计

c++ ×1

c++11 ×1

move ×1

std ×1