这是关于统计机器翻译系统Moses的源代码。
在Mosesdecoder project,的Factor
类中,关键字mutable
使用了这种奇怪的用法:
class Factor {
__SOME_OTHER_CODE__
// FactorCollection writes here.
// This is mutable so the pointer can be changed to pool-backed memory.
mutable StringPiece m_string
size_t m_id;
__SOME_OTHER_CODE__
}
Factor.h
的完整档案是here。我知道当你想修改const成员函数中的成员变量时,或者想要修改lambda表达式中的一些超出范围的变量时,会使用mutable
。但是,我不了解mutable
在此代码中正在做什么。
我很欣赏任何提示。谢谢。
答案 0 :(得分:4)
您提供的信息很少,我们可以做的就是猜测。
也就是说,从评论来看,听起来他们有某种存储池,他们可能希望将字符串的存储空间移动到存储池中。像mutable
的大多数用法一样,处理按位修改仍会使对象在逻辑上不被修改(即,它们更改指针使其指向相同的数据,但位于不同的地址)。