首页 > 解决方案 > 为什么 is_copy_constructible_v> 真的吗?

问题描述

正如下面的代码片段所证明的, A vectorof unique_ptrs 显然是不可复制的。尽管这一点,相应的 traitis_copy_constructible返回 true。这是为什么?

#include <memory>
#include <vector>

// This static assert passes, which is surprising
static_assert(std::is_copy_constructible_v<std::vector<std::unique_ptr<int>>>);

std::vector<std::unique_ptr<int>>
test(const std::vector<std::unique_ptr<int>>& original)
{
    std::vector<std::unique_ptr<int>> copy /* = original */;
    // commented-out part does not compile, as expected
    return copy;
}

标签: c++movetypetraits

解决方案


推荐阅读