Взять адрес того, на что указывает итератор, тоже довольно странно, похоже, что вы приводите указатель на указатель на указатель на функцию, а это не то, что вы хотели, я не думаю.
Приведение в стиле c не помогает, потому что оно может выполнять любые виды бросков, даже те, которые вам не нужны.
Для чего-то подобного в C ++ было бы удобнее определить интерфейс с виртуальной функцией, чтобы избежать беспорядка, который может быть указателем на функцию.