typedef к типу шаблона - PullRequest
       16

typedef к типу шаблона

4 голосов
/ 06 апреля 2011

Что не так со следующим?

typedef boost::shared_ptr SharedPtr;

GCC выдает следующую ошибку:

ISO C ++ запрещает объявление «shared_ptr» без типа

Ответы [ 2 ]

6 голосов
/ 06 апреля 2011

C ++ (пока) не имеет "typedefs шаблона", где вы можете "переименовать" шаблон, подобный этому. Эта функция добавляется в C ++ 0x, где такой «typedef» называется «шаблон псевдонима».

Самый простой способ, который работает сегодня, - это использовать шаблон класса с вложенным typedef:

template <typename T>
struct SharedPtr
{
    typedef std::shared_ptr<T> Type;
};

// usage
typename SharedPtr<int>::Type sp;
0 голосов
/ 28 июля 2018

C ++ 11:

template<typename T>
using SharedPtr = boost::shared_ptr<T>:

Или вы можете использовать shared_ptr, встроенный в C ++ 11:

template<typename T>
using SP = std::shared_ptr<T>;
...