Как в C можно использовать функцию шаблона в качестве аргумента шаблона для достижения повторного использования кода при поддержание общей функциональности, особенно когда задействованные функции сами по себе также являются шаблонами?
Чтобы решить эту проблему, используйте параметр шаблона шаблона. Основная концепция заключается в том, что параметры шаблона не могут напрямую включать функции шаблона из-за необходимости предварительного создания экземпляра. Обходной путь включает использование фиктивных структур для инкапсуляции функции шаблона:
template
struct a {
static void foo(T = T()) {}
};
template
struct b {
static void foo(T = T()) {}
};
struct SomeObj {};
struct SomeOtherObj {};
template class T>
void function() {
T::foo();
T::foo();
}
int main() {
function();
function();
}
В этом примере структуры a и b реализуют функции шаблона для метода foo. Шаблон функции принимает параметр шаблона шаблона, что позволяет нам передавать шаблоны a и b в качестве аргументов. Внутри функции создаются конкретные экземпляры фиктивных структур, позволяющие вызывать foo с различными типами параметров.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3