在'auto f(params) – > decltype(…,void())'中的'void()'是做什么的?

我在这里find的代码看起来像这样:

auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. } 

在我读的所有文档中,我被告知decltype被签名为:

decltype( entity )

要么

decltype( expression )

而且在任何地方都没有第二个论点。 至less这是cppreference指向的内容。 这是decltype的第二个参数吗? 如果是这样,它是做什么的?

One Solution collect form web for “在'auto f(params) – > decltype(…,void())'中的'void()'是做什么的?”

因为它是一个expression式,逗号就是逗号操作符(意思是types是rhs的types: void ),而不是另一个参数。

该代码使用SFINAE – 如果t.reserve(n)存在,则启用它,但它希望保持返回types为void