имя функции шаблона в терминах аргумента шаблона

Я искал примеры, касающиеся моего вопроса, и я до сих пор не могу найти решение. Ближайшая вещь, которую ямы нашли это

Функция шаблона в качестве аргумента шаблона

Я постараюсь опубликовать рабочий пример на случай, если он понадобится, но пока часть моего кода включает в себя следующее:

template 
inline void write_info(InterfaceType& interface, T& t) {
    InterfaceType::write_info(interface, t);
}

template 
inline void write_data(InterfaceType& interface, T& t) {
    InterfaceType::write_data(interface, t);
}

template 
inline void write_definition(InterfaceType& interface, T& t) {
    InterfaceType::write_definition(interface, t);
}

Обратите внимание, что шаблоныwrite_info зависит от типа интерфейса, который имеет метод с именемwrite_info (Статический метод). Это сделано потому, чтоwrite_info функция может быть позже специализирована для определенного типа данных без необходимости переопределять что-либо для.InterfaceType

Простой вопрос: можем ли мы уменьшить приведенный выше код с помощью шаблона, который называет функцию параметром функции? Имейте в виду, что я действительно хочу, чтобы это было возможно, чтобы я мог избежать определения всех этих трех функций для специализированного типа данных, т.е.

Предположим, чтоfoo это структура с двумя атрибутамиint a а такжеdouble b, Тогда я могу специализировать вышеупомянутые функции следующим образом:

template 
inline void write_info(InterfaceType& interface, foo& t) {
    InterfaceType::write_info(interface, t.a);
    InterfaceType::write_info(interface, t.b);
}

template 
inline void write_data(InterfaceType& interface, foo& t) {
    InterfaceType::write_data(interface, t.a);
    InterfaceType::write_data(interface, t.b);
}

template 
inline void write_definition(InterfaceType& interface, foo& t) {
    InterfaceType::write_definition(interface, t.a);
    InterfaceType::write_definition(interface, t.b);
}

Как вы можете видеть, яЯ пишу один и тот же код снова и снова. Здесь я'м, предполагая, что InterfaceType уже имеет определение,write_infowrite_data а такжеwrite_definition заint а такжеdouble, Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос