спросить: «Можно ли передавать данные в разные потоки?»
в частности:
"Может ли экземпляр быть общим для всех потоков?"
msgstr "можно ли разделять статические данные между потоками?"
также для определения отношения между константными / неконстантными методами:
"делает ли мутирующий метод недействительным инварианты класса во время его выполнения?"
Один из способов думать об этом последнем вопросе -
Может ли конструктор копирования работать в ЛЮБОЕ время В ТЕЧЕНИЕ / ПЕРЕКРЫТИЕ Выполнение метода мутации и все еще иметь действительный построенный объект?
(бывают случаи - сразу же приходит на ум статистика производительности - когда данные - это просто данные, а если подсчет обостряется [я НЕ говорю не о проблеме дингинга, здесь только взаимодействие с чтением] за один интервал или следующее, это не имеет значения. Поэтому метод мутации (dinging) не нужно сериализовать методом копирования)
Конечно, вам также нужно подумать о взаимодействии метода мутации с методами мутации.