Показать сообщение отдельно
Старый 15.06.2014, 11:30   #4
wolfhound512
Знающий
 
Аватар для wolfhound512
 
Регистрация: 18.02.2008
Сообщений: 276
Написано 121 полезных сообщений
(для 299 пользователей)
Ответ: std::vector как шаблонный параметр

так не получится, vector класса без шаблонных параметров в принципе не существует
Ему и не нужно существовать, т.к. существуют шаблонные шаблонные параметры.

Проблема первого поста заключается в отсутствии второго аругмента в строке:
Container<Node*> _list;
потому что std::vector имеет два шаблонных параметра (хотя второй и задан по умолчанию, но почему-то игнорируется)
если писать так:
template <template <class ...> class Container>
class Node {
public:
	Node() {}
private:
	Container<Node*, std::allocator<Node*>> _list;
};

Node<std::vector> n;
То все работает, но шаблон тогда получается привязан к std::allocator, чего хочется избежать.

Сделал менее удобным, но более гибким способом
template <class T> struct stdVector { typedef std::vector<T> type; };

template <template <typename ...> class Container>
class Node {
public:
	Node() {}

private:
	typename Container<cNode*>::type _list;
};

...

Node<stdVector> n;
__________________
GUI, GUIw512, AlbaLynx, Форум
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (15.06.2014)