小编Jon*_*ele的帖子

将一对移动到矢量中

我有这个功能模板:

template<typename Collection, typename T>
void insertColElement(Collection col, const T& element, std::true_type)
{
    col.insert(col.end(), std::move(element));
}
Run Code Online (Sandbox Code Playgroud)

如果T是可移动构造的,则调用它.现在我想用Collection = std::vector<..>和T = 调用这个函数std::pair<std::unique_ptr<..>, bool>,但编译器抱怨unique_ptr和pair的删除拷贝构造函数.我已经尝试使用emplace并单独移动第一个和第二个,但编译器仍然想调用复制构造函数.

编辑:

以下是所有相关的代码段:

template<typename Collection, typename T>
void insertColElement(Collection col, T&& element, std::true_type)
{
    col.insert(col.end(), std::forward<T>(element));
}



template<typename Collection, typename T>
void insertColElement(Collection col, T& element, std::false_type)
{
    static_assert(std::is_copy_constructible<T>::value,
        "Serialization: Collection type is neither copy nor move constructable");

    col.insert(col.end(), element);
}


template<typename Archive, typename Collection>
inline void loadCollection(Archive& ar, Collection& col)
{
    int size;
    ar >> …
Run Code Online (Sandbox Code Playgroud)

c++ move c++11 std-pair

2
推荐指数
1
解决办法
263
查看次数

标签 统计

c++ ×1

c++11 ×1

move ×1

std-pair ×1