Что означает 'пустота ()" в " авто F(параметры) -> decltype(..., пустота())' делать?


я нашел код здесь это выглядело примерно так:

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

во всей документации, которую я читал, мне сказали, что decltype подписан как:

decltype( entity )

или

decltype( expression )

и нигде нет второго аргумента. По крайней мере, это то, что указано на cppreference. Это второй аргумент для decltype? И если да, то что он делает?

1 53

1 ответ:

Так как это выражение, что запятая-это просто оператор запятой (то есть тип-это тип стороны rhs:void), а не еще один аргумент.

этот код использует SFINAE-он включен, если но он хочет сохранить возвращаемый тип как void.