c++ - ¿Qué significa ''void()'' en ''auto f(params)-> decltype(..., void())''?
c++11 sfinae (1)
Como es una expresión, la coma es simplemente el operador de coma (lo que significa que el tipo es el tipo del lado rhs: void
), no otro argumento.
Ese código usa SFINAE: está habilitado si t.reserve(n)
existe, pero quiere mantener el tipo de devolución como void
.
Encontré un código here que se parecía a esto:
auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. }
En toda la documentación que leí, me dijeron que decltype
está firmado como:
decltype( entity )
o
decltype( expression )
Y no hay un segundo argumento en ninguna parte. Al menos eso es lo que se señala en cppreference . ¿Es este un segundo argumento para decltype
? Y si es así, ¿qué hace?