The same is true for + expansion: Multiple words:
$ set -- 1 2; v=( "${#+$@}" ); declare -p v declare -a v=([0]="1" [1]="2") Empty string: $ set -- ; v=( "${#+$@}" ); declare -p v declare -a v=([0]="") Nothing: $ set -- ; v=( "${#+${#+$@}}" ); declare -p v declare -a v=()