在模板参数中,"<void(void)>" 是什么意思?

3

我在我正在工作的项目中发现了这段代码:

template<typename T>
class SomeClass
{
};
typedef SomeClass<void(void)> SomeType;

什么是<void(void)>构造?你能用一个简单的示例说明这种构造如何使用吗?
2个回答

5

这意味着类型参数是一个函数类型(注意,不是函数指针,而是函数类型),它不带任何参数并且不返回任何值。

你甚至可以这样定义函数的参数:

void f (void(void));

当传递时,它会衰减为函数指针(就像数组参数衰减为指针一样)。

你知道关于这个功能的一些文章吗?我找不到任何好的参考资料。谢谢! - Mircea Ispas
这是一个非常好的关于此问题的问答,可在SO上找到。 不过我没有找到其他的东西,抱歉。 - StoryTeller - Unslander Monica
谢谢,我已经找到了<functional>头文件,并将其作为非常好的参考在代码中尝试:)我开始理解这个概念了。 - Mircea Ispas

1

T 是一种不返回任何内容且不带参数的函数类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接