Доступ к типам аргументов указателя функции в классе шаблонов Variadic
Эта проблема возникает из предыдущего запроса, касающегося создания универсального функтора для функций с произвольным аргументом списки. Данный класс-функтор Foo позволяет вызывать указатель на функцию с любым количеством аргументов. Однако теперь задача состоит в том, чтобы извлечь типы аргументов из указателя функции внутри конструктора Foo.
При определении класса Foo типы аргументов инкапсулируются как ARGS... в объявлении указателя функции конструктора. Хотя значения аргументов недоступны во время создания, их типы доступны внутри самого указателя функции.
Чтобы раскрыть эти типы аргументов, можно использовать класс function_traits:
template
struct function_traits;
template>
{
// Number of arguments
static const size_t nargs = sizeof...(Args);
// Return type
typedef R result_type;
// Argument types at specified index
template <size_t i>
struct arg
{
typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
};
};
В конструкторе Foo можно получить доступ к этим типам аргументов с помощью function_traits следующим образом:
templateИспользуя function_traits, типы аргументов можно извлекать и использовать внутри класса Foo, что позволяет выполнять сложные операции на основе сигнатуры функции.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3