Что я не понимаю, так это: шаблон класса V
В вашем вопросе нет такой строки, поэтому я не могу помочь с этим.
template< template <typename ELEM> class CONT = std::deque >
class Stack
Это объявление параметра шаблона шаблона.Вы передаете шаблон в шаблон Stack
, а затем Stack
может использовать его для внутреннего использования.
Часть = std::deque
является значением по умолчанию, если вы оставляете параметр CONT неопределенным.(std::deque
- это предопределенный шаблон.)
Однако это не сработает, поскольку std::deque
принимает два аргумента.Это будет работать:
template< template <typename ELEM, typename ALLOC> class CONT = std::deque >
class Stack
Однако ELEM
и ALLOC
на самом деле ничего не называют;они существуют просто для того, чтобы уточнить, что представляет собой список параметров требуемого шаблона.Таким образом, вы можете опустить их:
template< template <typename, typename> class CONT = std::deque >
class Stack