В разделе «Вопросы и ответы», связанным с другим ответом, объясняется, почему следующий код не разрешен:
int **x = whatever;
const int **z = x;
Однако ваш код const int *const *z = x;
совсем другой, и он не страдает от той же ошибки поднятый в FAQ.
Фактически, в последнем коде нет ничего неправильного. Это просто недостаток в спецификации C, что он не разрешен, и он заставляет программистов C включать уродливые приведения в свой код.
Было бы возможно, чтобы C использовал те же правила, что и C ++ ; однако стандартный комитет С не решил сделать это.
Вместо «doc ['variable_group.variant_info']» вы должны использовать «doc ['variable_group'] ['option_info']» или «doc.variant_group.variant_info». Мне также повезло с "_source.variant_group.variant_info".