gcc 中的代码std::function有这两行:
template<typename _Res, typename... _ArgTypes>
class function<_Res(_ArgTypes...)> // <-- unclear to me
第一部分template... _ArgTypes表示“参数包”,即模板参数的可变数量;这很清楚。但第二行很神奇。好的,写作class function<SmthHere>意味着模板专业化,所以我们function用 _Res(_ArgTypes...). 后者看起来像一个带有可变数量参数的函数调用。但是如果_Resisvoid和_ArgTypesis int,我们得到void(int): 这对我来说没有意义,因为我们不能有一个命名的函数并向它void传递一个参数int(??)。这是特别支持的语法吗?你能澄清一下吗?