我发现代码here看起来像这样:
auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. }
在我阅读的所有文档中,我被告知decltype
签名为:
decltype( entity )
或
decltype( expression )
在任何地方都没有第二个论点。至少这是cppreference所指出的。这是decltype
的第二个参数吗?如果是这样,它会做什么?
答案 0 :(得分:71)
因为它是一个表达式,逗号只是逗号运算符(意思是类型是rhs的类型:void
),而不是另一个参数。
该代码正在使用SFINAE - 如果t.reserve(n)
存在,则会启用它但是它希望将返回类型保留为void
。