Question

I found code here that looked something like this:

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

In all the documentation I read I was told that decltype is signed as:

decltype( entity )

or

decltype( expression )

And there is no second argument anywhere. At least that's what's pointed to on cppreference. Is this a second argument to decltype? And if so, what does it do?

Was it helpful?

Solution

Since it is an expression that comma is simply the comma operator (meaning the type is the type of the rhs side: void), not another argument.

That code is using SFINAE - it's enabled if t.reserve(n) exists but it wants to keep the return type as void.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top