Что означает ‘void ()’ в ‘auto f (params) — & gt; decltype (…, void ()) ‘делать?

Я нашел код Вот это выглядело примерно так:

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

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

decltype( entity )

или же

decltype( expression )

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

53

Решение

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

Этот код использует SFINAE — он включен, если t.reserve(n) существует, но он хочет сохранить тип возвращаемого значения как void,

71

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]