тоже мне отличие, если писать код грамотно то идинственое узкое место - использование типа шаблона внутри класса другого-класса с шаблоном
к примеру у нас есть список list и внутри него iterator
мы пишем наш наблоный класс и внутри него пишем typedef list<T> megalist
и теперь чтобы возспользоватся внутри нашего класса итератором мы пишем megalist::iterator iter, в студии прокатывает, в gcc надо писать typename megalist::iterator iter, правда вариант для gcc компилируется и в студии потому возможно написать универсальный код