问题描述
我正在构建一个类似表达式的类系统。我想利用临时变量的生命周期规则来避免将sure表达式存储在带有不可读错误消息的巨型丑陋模板类中。
当然,如果用户巧妙地将我的一个表达式对象保存在一个变量中,他们可能会意外地创建悬挂的临时对象。
是否有一种方法可以防止用户创建一个本地变量来保存我的一个表达式实例,从而使他们永远不会为他们以为被捕获但实际上只是临时的临时对象感到惊讶呢? / p>
解决方法
我不知道一种阻止某人拥有允许您创建的本地类型的方法,但是您可以通过&&
限定其所有成员的资格来使其大部分无法使用。
这不会阻止坚定地滥用它的尝试,因为他们总是可以std::move
,但是应该避免发生意外。