Компилятор имеет некоторую внутреннюю структуру данных, представляющую каждый класс. Когда дело доходит до синтеза конструктора копирования, он может ссылаться на эту структуру, чтобы выяснить, какой код ему нужно выдать (сколько копий, как делается каждая и каковы адреса членов по отношению к источнику и адрес объекта назначения).
Как простой программист на C ++, у вас нет доступа к этой внутренней структуре данных времени компиляции, так что вам почти не повезло. Вы в основном должны перечислить участников и надеяться, что вы не пропустите никого.
Возможно, вы могли бы поработать с препроцессором (или, если нет, препроцессором , то a препроцессором), чтобы аннотировать определение структуры дополнительной информацией, которую вы можете использовать для генерации списка одного звонка для каждого участника.