在'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
的第二个参数吗? 如果是这样,它是做什么的?
因为它是一个expression式,逗号就是逗号操作符(意思是types是rhs的types: void
),而不是另一个参数。
该代码使用SFINAE – 如果t.reserve(n)
存在,则启用它,但它希望保持返回types为void
。