Ответ 1
Как вы сами выяснили, разница между двумя параметрами заключается в том, включены ли расширения GNU, которые нарушают стандарт C++, или нет. Расширения GNU C++ описаны здесь. Вы также можете использовать большинство расширений GNU C (описанных здесь) в ваших программах C++. Было бы также полезно прочитать о -Wpedantic
GCC здесь.
Обратите внимание, что некоторые расширения могут по-прежнему действовать при использовании -std=C++11
, если они не противоречат стандарту. Например, при использовании компилятора MinGW мне нужны расширения для рабочего Boost.Lexical_Cast
. Но, пока вы не используете никого из них, вам лучше придерживаться стандарта без расширений для максимальной переносимости. Это может пригодиться, если вы вынуждены сменить компилятор.