gpt4 book ai didi

templates - C++ std::function-like模板语法

转载 作者:行者123 更新时间:2023-12-03 23:33:45 26 4
gpt4 key购买 nike

在C ++ 11中,您可以像这样实例化std :: function:

std::function<void(int)> f1;
std::function<int(std::string, std::string)> f2;
//and so on


但是,尽管网上有很多关于可变参数模板的信息,但是我找不到任何有关如何编写std :: function-like模板的文章,这些模板将接受带括号的参数。
任何人都可以解释其语法及其局限性,或者至少指向现有解释吗?

最佳答案

没什么特别的,它是一个普通的函数类型。当您声明这样的函数时:

int foo(char a, double b)


然后其类型为 int (char, double)。 “解包”各个参数类型和返回类型的一种方法是使用部分模板专门化。基本上, std::function看起来像这样:

template <class T>
struct function; // not defined

template <class R, class... A>
struct function<R (A...)>
{
// definition here
};

关于templates - C++ std::function-like模板语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com