Проблема в том, что в C ++ не разрешено (или безопасно) преобразовывать T ** в const T **. Причина в том, что, если бы вы могли сделать это, вы бы смогли уничтожить const. Например:
const T value;
T* mutablePtr;
const T** doublePtr = &mutablePtr; // Illegal, you'll see why.
*doublePtr = &value; // Legal, both sides have type const int*.
// However, mutablePtr now points at value!
*mutablePtr = 0; // Just indirectly modified a const value!
Чтобы исправить это, вам нужно обновить код, чтобы не пытаться выполнить это преобразование. Например, вы можете изменить тип параметра для модификации на
const Interface<DIM> * const *
Поскольку законно преобразовать T ** в const T * const *.
Надеюсь, это поможет!