如果我从b移动构建一个,还是有必要破坏b,还是不能这样做呢?
这个问题在实施可选的< T>模板.摘抄:
- ~optional()
- {
- if (initialized)
- {
- reinterpret_cast<T*>(data)->~T();
- }
- }
- optional(optional&& o) : initialized(o.initialized)
- {
- if (initialized)
- {
- new(data) T(std::move(*o)); // move from o.data
- o.initialized = false; // o.data won't be destructed anymore!
- }
- }
当然,我可以用一个三值的枚举来替换初始化的bool,区分初始化的,非初始化的和被移动的.我只是想知道这是否是严格必要的.