【发布时间】:2021-12-19 20:34:12
【问题描述】:
gcc中std::function的代码有这两行:
template<typename _Res, typename... _ArgTypes>
class function<_Res(_ArgTypes...)> // <-- unclear to me
第一部分template... _ArgTypes表示“参数包”,即模板参数的可变数量;这很清楚。但第二行很神奇。
好的,写class function<SmthHere> 表示模板特化,所以我们将function 类特化为_Res(_ArgTypes...)。后者看起来像一个带有可变数量参数的函数调用。但是,如果_Res 是void 并且_ArgTypes 是int,我们会得到void(int):这对我来说没有意义,因为我们不能有一个名为void 的函数并传递一个参数@987654334 @给它(??)。这是特别支持的语法吗?你能澄清一下吗?
【问题讨论】:
-
不太确定,您对 的真正含义是什么,因为我们不能有一个名为
void的函数,而且还不能向它传递一个参数int(??)。":coliru.stacked-crooked.com/a/46669ef2aa24e233
标签: c++ variadic-templates parameter-pack