【发布时间】:2012-02-16 00:26:23
【问题描述】:
如何“重置”/“取消设置”boost::optional?
optional<int> x;
if( x )
{
// We won't hit this since x is uninitialized
}
x = 3;
if( x )
{
// Now we will hit this since x has been initialized
}
// What should I do here to bring x back to uninitialized state?
if( x )
{
// I don't want to hit this
}
【问题讨论】:
-
为什么没有
optional::clear或optional::empty对我来说有点神秘。 -
可能是因为完全不需要一个。
-
@LightnessRacesinOrbit:你能详细说明一下吗?我在可选成员变量的上下文中查看此内容,您希望从本质上重置对象的某些状态。也许有更好的方法来做到这一点。
-
@Guy:相反,请解释(对于 pmr)为什么需要
optional::clear或optional::empty。 -
@LightnessRacesinOrbit:我没有说需要一个 :-) 但我会试一试,我们有 vector::clear 和 shared_ptr::reset 那么为什么是 optional::clear还是可选的::reset 不同?你是说 optional 不应该被重置,还是你说赋值习语是一个人需要的,或者你说应该只有一种方法来做某事?我不是在争论 - 只是对你的想法感兴趣......
标签: c++ boost boost-optional