Учитывая тот факт, что указатель на функцию, возвращающую другой указатель на другую функцию, является механизмом, используемым в C для введения некоторого полиморфизма / обратных вызовов времени выполнения, каков эквивалентный способ реализовать это в C ++ при одновременном улучшении локальности и снижении затрат на указатели и косвенные ссылки ?
Например этот синтаксический сахар может помочь, но я не очень заинтересован в этом, хотя это хороший способ сделать что-то на языке C ++, а не на C-ish typedef
Меня больше интересует улучшение локальности при попытке уменьшить использование явных указателей во время выполнения.
Реальная причина того, почему люди используют указатели функций в C для эмуляции полиморфизма, заключается не в производительности, а в том, что C не поддерживает ни реальный полиморфизм, ни шаблоны. Это две альтернативы у вас в C ++. Все три подхода сравниваются в эта тема.
Обратите внимание, что хотя вызов указателя функции не требует дополнительного поиска в vtable, как это делают вызовы виртуальных функций, вызов виртуальных функций и указателей функций страдают от одной и той же серьезной проблемы производительности: предсказание ветвлений в обоих случаях не так надежно, и вы склонны завершать с большим количеством промывок трубопровода.
Я думаю, что вы можете использовать виртуальную функцию для удовлетворения части требований.