gcc это образцово показательная реализация компилятора c++ и c, на нем обкатываются очередные стандарты, я бы еще с оглядкой думал про llvm clang, но с его помощью по простому ты не получишь windows exe (или уже можно?).
Если тебе важен именно мир windows, то майкрософт, с завидным постоянством ломающая стандарты в угоду своей монополии, то конечно используй майкрософтовский компилятор mscc (идет в поставке с ms visual studio и как отдельный sdk).
Так вот если у тебя один компилятор дает 'рабочий код' а другой нет, это значит какой то из этих компиляторов неожиданно обошелся со стандартами (это может быть не сам компилятор а набор правил и библиотеки, которые идут с ним в 'комплекте') а значит у тебя в коде ошибка, которая просто не вылезает (или вылезает с меньшей вероятностью) с одним из компиляторов.
Исправляй ошибку - проблема исчезнет.