C ++ в настоящее время не хватает необходимого механизма отражения для реализации чего-то подобного, удовлетворяющего всем вашим требованиям.
Нет способа получить список имен функций-членов класса и единственный способ «переадресации» члена вызовы функций без знания имен функций-членов operator->
, как это делают умные указатели стандартной библиотеки, что, по-видимому, вам не кажется достаточным для ваших целей.
Вам нужно либо изменить сами исходные классы, чтобы обеспечить отражение или вам нужно написать обертки для каждого класса индивидуально (или хотя бы перечислить все возможные имена функций-членов).
В настоящее время существует черновик для Reflection TS (Техническая спецификация, т.е. экспериментальное расширение для C ++), которая позволил бы отразить и получить имена функций-членов, но все равно не позволил бы использовать эти отраженные имена для объявления сущностей с этими именами из того, что я могу сказать, и, следовательно, все еще не достаточно для решения проблемы. ваш вариант использования.