Для чего используется ключевое слово mutable в исходном коде Moses?

Это касается исходного кода статистической системы машинного перевода. Моисей.
в Factor класс Проект Mosesdecoder, есть это странное использование ключевого слова 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 является Вот. я знаю это mutable используется, когда вы хотите изменить вариант члена в константной функции-члене или когда вы хотите изменить некоторую переменную вне области видимости в лямбда-выражении. Я, однако, не понимаю, что mutable делает в этом коде.

Я ценю любой намек. Спасибо.

4

Решение

Вы предоставили достаточно мало информации, и все, что мы можем сделать, — это угадать.

Тем не менее, из комментария кажется, что у них есть какой-то пул хранения, и они могут захотеть переместить хранилище для строки в пул хранения. Как и в большинстве случаев mutable, это имеет дело с побитовой модификацией, которая все еще оставляет объект логически неизмененным (то есть, они изменяют указатель так, чтобы он указывал на те же данные, но по другому адресу).

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]