Ошибка создания экземпляра при передаче initializer_list пар конструктору класса
Я не могу понять, что не так с конструктором моего класса. Когда я пытаюсь создать экземпляр объекта класса таблицы, я получаю
error: no matching function for call to ‘std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >::map(std::initializer_list<std::pair<int, int> >&)’
Вот моя текущая реализация класса таблицы
template <class T1,class T2>
class table {
public:
table() = default;
table(std::initializer_list<std::pair<T1,T2>> args) :slots(args) {}
table(const table& other) :slots(other.slots) {}
table& operator= (table other) {
swap(*this,other);
return *this;
}
~table() = default;
typedef typename std::map<T1,T2>::iterator iterator;
T2& operator[](T1 key) {
return slots[key];
}
unsigned erase(T1 key) {
return slots.erase(key);
}
unsigned erase(iterator start, iterator finish) {
return slots.erase(start,finish);
}
size_t size() {
return slots.size();
}
iterator begin() {
return slots.begin();
}
iterator end() {
return slots.end();
}
bool key_exists(T1 key) {
return (slots.find(key) != slots.end());
}
bool value_exists(T2 value) {
return (std::find_if(slots.begin(),slots.end(),[value](std::pair<T1,T2> a) {
return (a.value == value);
}) != slots.end());
}
std::map<T1,T2> slots;
private:
void swap(table& a,table& b) {
using std::swap;
swap(a.slots,b.slots);
}
};