我正在尝试创建一个仅移动类型的stl容器,该容器在VStudio 2012中使用自己的分配器。
问题是:似乎我必须为allocator提供一个构造函数,而该函数又需要访问所包含类型的公共拷贝构造函数。
我得到:
错误C2248:' std :: unique_ptr< _Ty> :: unique_ptr' :无法访问类中声明的私有成员' std :: unique_ptr< _Ty>'
或
错误C2039:&#39>构建' :不是' MyAllocator'
的成员相同的代码在clang中起作用,所以我怀疑这个问题是由微软引起的,但是有人可以提出可行的解决办法吗?
这是我的最小复制代码
$(".earnContent").click(function(e) {
$(".content").slideUp(300);
$(this).next().slideDown(300);
});
答案 0 :(得分:1)
您得到的错误是因为您尝试从对同一类型的std::unique_ptr
的常量引用构造std::unique_ptr - 并且没有这样的构造函数。
您可以重新设计construct
方法以获取右值参考,然后所有内容都可以很好地编译:
void construct(pointer mem, value_type&& value)
{
std::_Construct(mem, std::move(value));
}