Внешний интерфейс EDG (который использует компилятор Intel) выдает эту ошибку, когда вы используете необъявленное, квалифицированное имя в typedef.Таким образом, это означает, что std::shared_ptr
не объявлено в <memory>
, что подразумевает либо то, что вы забыли использовать -std=c++0x
(но вы говорите, что использовали это), либо ваш компилятор Intel использует заголовки из более старой версии GCC (а не 4.6).1 установка), которая не обеспечивает shared_ptr
.
Вы должны быть в состоянии убедиться, что получаете ту же ошибку, изменив идентификатор шаблона на тот, который определенно не объявлен:
#include <memory>
class A;
typedef std::xxx_shared_ptr<A> A_Ptr;