- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近安装了 Visual Studio 2010 Professional RC 来试用它并测试在 VC++ 2010 中实现的几个 C++0x 功能。
我实例化了 std::unique_ptr
的 std::vector
,没有任何问题。但是,当我尝试通过将临时对象传递给 push_back
来填充它时,编译器会提示 unique_ptr
的复制构造函数是私有(private)的。我尝试通过移动它来插入一个左值,它工作得很好。
#include <utility>
#include <vector>
int main()
{
typedef std::unique_ptr<int> int_ptr;
int_ptr pi(new int(1));
std::vector<int_ptr> vec;
vec.push_back(std::move(pi)); // OK
vec.push_back(int_ptr(new int(2))); // compiler error
}
事实证明,问题既不是 unique_ptr
也不是 vector::push_back
而是 VC++ 在处理右值时解决重载的方式,如下面的代码所示:
struct MoveOnly
{
MoveOnly() {}
MoveOnly(MoveOnly && other) {}
private:
MoveOnly(const MoveOnly & other);
};
void acceptRValue(MoveOnly && mo) {}
int main()
{
acceptRValue(MoveOnly()); // Compiler error
}
编译器提示复制构造函数不可访问。如果我公开它,程序就会编译(即使未定义复制构造函数)。
我是不是对右值引用有什么误解,或者它是 VC++ 2010 实现此功能时的一个(可能已知的)错误?
最佳答案
不幸的是,/Za 有问题。它在不应该的时候执行省略复制构造函数可访问性检查(绑定(bind)右值引用不会调用复制构造函数,即使在理论上也是如此)。因此,不应使用/Za。
Stephan T. Lavavej,Visual C++ 库开发人员 (STL@microsoft.com)
关于c++ - VC++ 2010 中的 "moveable-only types"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681959/
我正在使用 Scriptaculous 使元素 (id="moveable1") 可拖动/可移动: new Draggable('moveable1'); 使用 javascript - 我怎样才能最
我尝试在浏览器窗口中使用固定位置的可移动道场。不幸的是,每次我用鼠标移动 div 时,位置都设置为绝对。我该怎么做才能使 div 固定? html: bla testtesttesttesttes
我正在使用 dojo/dnd/Moveable 来在页面上拖动 div,类似于下面的示例。 在用户拖动 div 时运行的事件 'move' 期间,我需要应用一些逻辑(在我的真实示例中,我需要检查一些鼠
当我通过应用 dojo.dnd.moveable 使 div 可移动时,它可以移动到视口(viewport)之外。我怎样才能避免这种情况? 最佳答案 使用 dojo.dnd.move.boxConst
我最近安装了 Visual Studio 2010 Professional RC 来试用它并测试在 VC++ 2010 中实现的几个 C++0x 功能。 我实例化了 std::unique_ptr
我正在使用 gmock 并模拟了一个函数 boost::beast::http::response_parser作为输出参数。功能签名看起来像: error_code readFromSocket(b
过去几个小时我一直在努力解决这个问题。我可以通过一个简单的 node.js 应用程序很好地使用react-moveable。当我尝试在 NEXTjs 应用程序中使用相同的模块时,它会抛出错误:Type
我是一名优秀的程序员,十分优秀!