C ++使用函数参数类型进行模板参数推导

特伦
template<typename T>
void f(void (*func)(const T&)) {
    (*func)(T());
}

void func(const int& i) {
    std::cout << i << std::endl;
}

int main() {
    f(&func);
}

这里的模板参数T (= int)f基础上,函数的第一个参数被自动扣除func

这也可以扩展为与通用函子(lambda函数或其他函数对象)一起使用。可能与第二个函数一起使用,即类似

template<typename T, typename Function> void f(Function func);

template<typename Function>
void call_f(Function func) {
    using arg_type = first_argument_type_t<Function>; // ???
    f<arg_type, Function>(func);
}

秋天funcf应该可以被编译器内联,所以std::function不能使用。

乔蒂克

我通常使用的功能特性代码像这样(GPL-3行货)这样做:

template <typename F>
using first_argument_type_t =
     typename sharemind::FunctionTraits<F>::template argument<0u>::type;

但是也有Boostfunction_traits替代方案,可能会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Lambdas进行C ++模板参数推导

来自分类Dev

C ++:将lambda作为带有模板参数的函数进行传递会使推导模板类型失败

来自分类Dev

C ++函数类型模板参数推导规则

来自分类Dev

模板参数推导C ++

来自分类Dev

模板参数推导C ++

来自分类Dev

C ++中转换函数模板参数推导的含义

来自分类Dev

看不懂C++11模板函数参数推导

来自分类Dev

C ++模板函数类型推导

来自分类Dev

C ++模板函数类型推导

来自分类Dev

具有模板模板参数的C ++函数失败模板参数推导/替换

来自分类Dev

C ++:仅在使用“ <>”时推导默认模板参数

来自分类Dev

C ++-模板参数推导/替换失败

来自分类Dev

C ++中的模板化参数推导

来自分类Dev

C ++ 17模板参数推导失败

来自分类Dev

C ++可变参数模板推导失败

来自分类Dev

非类型模板参数中的C ++类类型:推导指南失败

来自分类Dev

使用函数类型与函数指针作为C ++模板函数参数的区别?

来自分类Dev

C ++传递函数按参数按模板类型进行调用

来自分类Dev

C ++模板函数根据模板参数返回类型

来自分类Dev

如何使用模板类型作为函数参数派生抽象模板类(C ++ 11)

来自分类Dev

C ++-通过enable_if_t推导参数包(可变模板)构造函数和复制构造函数

来自分类Dev

C++ 函数模板:必须使用 & 作为参数类型和返回类型吗?

来自分类Dev

根据C ++模板函数的参数类型解析为不同的类型

来自分类Dev

基于输入参数的C ++返回类型推导

来自分类Dev

使用默认参数的C ++函数模板

来自分类Dev

c ++ 11:使用向量的元素调用可变参数函数,并自动推导参数数量

来自分类Dev

使用模板将任何类型的参数传递给 C++ 中的函数

来自分类Dev

C ++:如何在可变参数模板参数上调用带有类型参数的函数?

来自分类Dev

在C ++中将函数返回类型指定为模板参数

Related 相关文章

  1. 1

    使用Lambdas进行C ++模板参数推导

  2. 2

    C ++:将lambda作为带有模板参数的函数进行传递会使推导模板类型失败

  3. 3

    C ++函数类型模板参数推导规则

  4. 4

    模板参数推导C ++

  5. 5

    模板参数推导C ++

  6. 6

    C ++中转换函数模板参数推导的含义

  7. 7

    看不懂C++11模板函数参数推导

  8. 8

    C ++模板函数类型推导

  9. 9

    C ++模板函数类型推导

  10. 10

    具有模板模板参数的C ++函数失败模板参数推导/替换

  11. 11

    C ++:仅在使用“ <>”时推导默认模板参数

  12. 12

    C ++-模板参数推导/替换失败

  13. 13

    C ++中的模板化参数推导

  14. 14

    C ++ 17模板参数推导失败

  15. 15

    C ++可变参数模板推导失败

  16. 16

    非类型模板参数中的C ++类类型:推导指南失败

  17. 17

    使用函数类型与函数指针作为C ++模板函数参数的区别?

  18. 18

    C ++传递函数按参数按模板类型进行调用

  19. 19

    C ++模板函数根据模板参数返回类型

  20. 20

    如何使用模板类型作为函数参数派生抽象模板类(C ++ 11)

  21. 21

    C ++-通过enable_if_t推导参数包(可变模板)构造函数和复制构造函数

  22. 22

    C++ 函数模板:必须使用 & 作为参数类型和返回类型吗?

  23. 23

    根据C ++模板函数的参数类型解析为不同的类型

  24. 24

    基于输入参数的C ++返回类型推导

  25. 25

    使用默认参数的C ++函数模板

  26. 26

    c ++ 11:使用向量的元素调用可变参数函数,并自动推导参数数量

  27. 27

    使用模板将任何类型的参数传递给 C++ 中的函数

  28. 28

    C ++:如何在可变参数模板参数上调用带有类型参数的函数?

  29. 29

    在C ++中将函数返回类型指定为模板参数

热门标签

归档