我正在尝试使用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
的复制构造函数会被实例化,当我所做的只是尝试默认构造该对时。