C ++自动移动

时间:2017-09-19 04:23:55

标签: c++ optimization

在C ++中是否允许编译器确定在语句之后没有使用变量,因此即使它是左值也会从中移出?

例如:

{
    std::string s = "Hello";
    myvector.push_back(s);
}

似乎编译器可以判断s从未被再次使用并将其视为临时的,从而消除了副本。

我看到一家大型公司的代码充斥着std ::提高效率。这看起来真的不安全,因为您必须查看整个函数来判断变量是否仍然有效,如果您重新排列任何行,您可能会意外地炸毁所有行。在几乎所有这些情况下,变量在移动后都不会被引用。似乎这些优化最好留给编译器,只有逻辑留给我们人类。

0 个答案:

没有答案