如果我们拥有
std::experimental::optional<int> x;
以下两行都无法编译:
std::experimental::optional<unsigned int> y; y = x;
std::experimental::optional<unsigned int> z(x);
尽管对我来说,这似乎就像将int
赋值给unsigned int
一样有道理。为什么这样不起作用呢?也就是说,库不实现这些情况下的复制构造函数和赋值操作符所避免的陷阱是什么?
std
命名空间构造添加它们。 - einpoklum