仅移动类型列表的地图将无法编译

时间:2014-10-02 12:04:46

标签: c++ visual-c++ c++11 move-semantics

我正在尝试使用std::map< Key, std::list< std::unique_ptr< T > > >

我是否遗漏了为什么不可能这样做的一些根本原因?

我已将错误代码减少到以下内容:

// A simple move-only type
struct moveonly
{
  moveonly(moveonly const&) = delete;
  moveonly& operator= (moveonly const&) = delete;

  moveonly() = default;
  moveonly(moveonly&&) = default;
  moveonly& operator= (moveonly&&) = default;

  ~moveonly() noexcept {}
};

typedef std::list< moveonly > list_t;
typedef std::pair< int, list_t > pair_t;

// Even just trying to default construct such a pair fails
pair_t pr;

我正在使用MSVC November CTP。错误是&#34;尝试为moveonly的复制构造函数引用已删除的函数&#34; 。这是在std::list的复制构造函数中实例化的。我不知道为什么std::list的复制构造函数会被实例化,当我所做的只是尝试默认构造该对时。

0 个答案:

没有答案