我有一个Action
类,看起来像这样(在其精简形式):对象会从返回的值不构成复制或移动构造
struct Action {
explicit Action(...some parameters...); // I only use this to construct Action objects
Action(const Action&) = delete; // Don't want copy constructor
Action(Action&&) = delete; // Same for move constructor
}
在其他一些翻译单元,我曾尝试做到这一点:
Action action = someMethodForGettingActions(); // The method returns Action objects by rvalue
Visual Studio的Intellisense希望为此挂我,有道理。它说它不能访问移动构造函数。 然而,这编译和运行如预期。这里发生了什么?这是否是一些编译器优化对我的玩法?
具体哪一种intellisense解析器?并不是所有的IDE都使用相同的。 –
我使用的是Visual Studio 2013. – Mark
这利用了返回值优化,但编译器应禁止编译,因为您已经删除了'const Action&'构造函数,即使它实际上并不需要使用它。 – Dave