Пробую (для обучения) реализовать свою двустороннюю очередь.
template <class T> class Deque
{
private:
enum { defaultSize = 25, len = 5 };
void dealloc ( );
int alloc ( const unsigned & = defaultSize, const T & = T() );
T ** array;
pair<int,int> xy;
...
public:
Deque ( const unsigned &, const T & = T() ); //1
template <class Iterator> Deque (Iterator _first, Iterator _last); //2
Deque ( );
virtual ~Deque();
};
В main.cpp идёт создание дека:
Deque<int> test1(25, -1);
Все хорошо если нет 2-го конструктора. Второй конструктор «перебивает» действие первого. Почему так происходит я не понимаю, ведь в конструктор передаются типы const unsigned и const int и как я понимаю компилятору следовало бы направить этот путь к первому конструктору, но он упорно использует второй...
Подскажите пожалуйста что не так.