Мой сотрудник 0 для 2 по вопросам, которые он вдохновил (1, 2), поэтому я подумал, что дам ему шанс наверстать упущенное.
Наше последнее несогласие в том, что вопрос стиля о том, куда положить "const" в объявлениях.
Он считает, что он должен идти либо перед типом, либо после указателя. Причиной является то, что это то, что обычно делают все остальные, и другие стили могут вводить в заблуждение. Таким образом, указатель на константу int и константный указатель на int будут соответственно:
const int *i;
int * const i;
Однако я все равно смущен. Мне нужны правила, которые непротиворечивы и понятны, и единственный способ понять смысл "const" заключается в том, что он идет за тем, что он модифицирует. Там есть исключение, которое позволяет ему идти перед конечным типом, но это исключение, поэтому мне легче, если я его не использую.
Таким образом, указатель на константу int и константный указатель на int будут соответственно:
int const * i;
int * const i;
В качестве дополнительной выгоды, делая это, таким образом, более глубокие уровни косвенности легче понять. Например, указатель на постоянный указатель на int будет выглядеть следующим образом:
int * const * i;
Я утверждаю, что если кто-то просто узнает об этом по-своему, у них будет небольшая проблема, выясняя, что вышло выше.
Конечная проблема здесь заключается в том, что он считает, что установка const после int настолько невыразимо уродлива и настолько вредна для читаемости, что она должна быть запрещена в руководстве по стилю. Конечно, я думаю, что если что-нибудь посоветует предложить сделать это по-своему, но в любом случае мы не должны запрещать один подход.
Edit: У меня есть много хороших ответов, но никто действительно не обращается к моему последнему абзацу ( "Конечная проблема" ). Многие люди утверждают о последовательности, но настолько ли желательно, чтобы в этом случае было бы неплохо запретить другой способ сделать это, а не просто обескураживать его?