如果我们有一个具有不可复制值类型的容器,这样的容器类仍然定义了复制构造函数,只是它可能不会被调用。
using T = std::vector<std::unique_ptr<int>>;
std::cout << std::is_copy_constructible_v<T>; // prints out "1" (libstdc++)
这可能会导致“隐藏”问题,例如此处讨论的问题:Visual Studio 2017 是否需要显式移动构造函数声明?.
我的问题是标准库实现是否可以将此类复制构造函数定义为有条件地删除,即在不可复制值类型的情况下删除。这对我来说很有意义(至少在有 C++ 概念之前)。这样的实现会符合标准吗?