Зачем в определении макросов опытные участники пишут #define all(v) (v).begin(), (v).end(), обрамляя название контейнера в дополнительные скобки? То же самое с переменной в цикле for: #define REP(i,n) for (int (i)=0; (i)<n; (i)++)
В каких случаях это может помочь?