Это вопрос, который я искал некоторое время, но у меня пока нет правильного ответа 🙁
Единственный способ, которым архитектура Гарвард против Принстона действительно имеет отношение к C ++, — это правило 5.2.10p8, касающееся смешивания указателей функций и указателей объектов:
Преобразование указателя функции в тип указателя объекта или наоборот поддерживается условно. Смысл такого преобразования определяется реализацией, за исключением того, что, если реализация поддерживает преобразования в обоих направлениях, преобразование значения одного типа в другой тип и обратно, возможно, с другим резюме квалификация, должен дать исходное значение указателя.
Это правило позволяет использовать C ++ на машинах, которые имеют отдельные адресные пространства для кода и данных.
Других решений пока нет …