Да, но только если они совпадают.
Вы пересылаете объявленный глобальный тип string
, а не в пространстве имен std
.
Вероятно, вы могли бы сделать он работает с namespace std {}
, но тогда ваша программа будет иметь неопределенное поведение, потому что вам не разрешено объявлять новые вещи в этом пространстве имен (за некоторыми исключениями).
В общем, вы хотите избежать предварительных объявлений для чего угодно, кроме ваших собственных классов.
Просто #include <string>
. Если это вызывает проблемы, вам следует решить их самостоятельно.