摩西源代码中的关键字是多变的?

时间:2013-12-16 06:48:56

标签: c++ c++11 smt moses

这是关于统计机器翻译系统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在此代码中正在做什么。

我很欣赏任何提示。谢谢。

1 个答案:

答案 0 :(得分:4)

您提供的信息很少,我们可以做的就是猜测。

也就是说,从评论来看,听起来他们有某种存储池,他们可能希望将字符串的存储空间移动到存储池中。像mutable的大多数用法一样,处理按位修改仍会使对象在逻辑上不被修改(即,它们更改指针使其指向相同的数据,但位于不同的地址)。