I'd like to emphasize the point of @Xavier Pedraza : Signed integers will be promoted to unsigned types if they have no bigger bit size. This can easily lead to errors.
Consider:
if (7 - std::size(vec) < 0)
this will always evaluate to false, as the integer is promoted to unsigned. Using ssize_t will fix it.