Почему CLANG/GCC не компилируют код код который компилируется MSVC++?
CLANG/GCC не видят тип string в глобальном пространстве имён, если он туда загружен через using std::string (видят только если вместо string писать ::string), так же для typeid требуют . Я не думал что у них различаются стандарты. Как мне дальше не наступить на такие грабли?
Потому, что gcc - компилятор языка C. Используйте g++.
Upd.
Ошибку выбивает потому, что вы не подключили библиотеку libstdc++, в которой определены string и другие объекты стандартной библиотеки: gcc file_name.cpp -lstdc++
Просто, msvc++ и g++ делают это автоматически.
Я уже разобрался в чём была ошибка, просто перед именем метода возвращающего string, стоял __forceinline обёрнутый в макрос, а clang и gcc его не поддерживают.