因为优化而没有调用C ++移动构造函数?

时间:2014-11-27 17:14:37

标签: c++ visual-studio optimization move-semantics

#include <iostream>

using namespace std;

class Foo
{
public:
    Foo()
    {
        cout << "Foo()" << endl;
    };

    Foo(Foo&& f)
    {
        cout << "Foo(Foo&&)" << endl;
        this->x = 1;
    }
    Foo(const Foo& f)
    {
        cout << "Foo(const Foo&)" << endl;
        this->x = 2;
    }

    int x;

    static Foo get()
    {
        return Foo();
    }
};

int main(int argc, char* argv[])
{
    Foo foo2(Foo::get());
    return 0;
}

以上代码如何产生输出:

Foo()

我在期待:

Foo()
Foo(&&)

我的解释是因为编译器优化。

但这会导致不同的行为。

我使用的是Microsoft VS 2013。

0 个答案:

没有答案