Ошибка создания экземпляра при передаче 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);
  }
};

0 ответов

Другие вопросы по тегам