Уже неделю вдумчиво изучаю эту книгу. В книге довольно часто встречается примерно такое предложение - "Конкретная реализация этого может быть разной в разных версиях компиляторов. За подробной информацией обращайтесь к документации на данный компилятор".
Например, в описании цикла for пишется, управляющая переменная может быть объявлена внутри цикла for. В этом случае данная переменная существует только внутри этого цикла (область видимости). Далее Шилдт пишет, что ранее в стандарте С++ объявленная таким образом переменная существовала (была видима) и за пределами этого цикла, но в новой версии С++ ANSI/ISO эта переменная определяется только внутри данного цикла. Это только один из примеров разницы стандартов и версий компиляторов.
Вопрос: к какой документации обратиться чтобы узнать конкретные детали реализации каких-то вещей в определённой версии gcc?
ИМХО, из-за такого разнобоя могут проистекать ошибки. Например пограмма написана с учётом одного стандарта а компилируется компилятором придерживающегося другого стандарта.
Каким образом избегать подобных коллизий?
P.S. Когда-то один знакомый программист сравнивая Паскаль и С++ сказал, что С++ разрешает почти всё, из-за этого он похож на бензопилу без кожуха. Требуется постоянная внимательность что б чего ненароком не отпилить