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