Я пытаюсь использовать привязку, чтобы произвести функцию, которая:разыменования итератора как часть подталкивание :: связать составную цепь
- получает карту, м
- возвращается m.begin() -> первый
для этого я пытаюсь использовать подталкивание :: обязывать:
typedef map<int,int>::const_iterator (map<int,int>::*const_begin_end)() const;
bind(&pair<const int,int>::first, bind(static_cast<const_begin_end>(&map<int, int>::begin), _1));
Это не работает, так как результат начинает потребность быть дер ferenced. Я думал что-то вроде
bind(&pair<const int,int>::first, bind(&operator*, bind(static_cast<const_begin_end>(&map<int, int>::begin), _1)));
Но это не сработало, так как глобальный оператор не существует *.
Вопросы:
- Можно ли добиться этого, используя повышение :: связать сложные цепи? Как?
- Более легко читаемые альтернативы?
Спасибо, я должен прочитать об этой библиотеке. – ricab