I bring few suggestions for improvement into your consideration.
I thought about printf -v T[0] %s...
then I thought about what could T[@] possibly mean in this context?
Here is my suggestion (".|" means commandline and "-|" means its output):
.|echo {a..c}{0..2}
-|a0 a1 a2 b0 b1 b2 c0 c1 c2
.|declare -a T=();
.|printf -v 'T[@]' '%s %s %s' {a..c}{0..2};
.|printf '%s\n' "${T[@]}";
-|a0 a1 a2
-|b0 b1 b2
-|c0 c1 c2
.|printf -v 'T[@]:1' '%s %s %s' {d..f}{0..2};
.|printf '%s\n' "${T[@]}";
-|a0 a1 a2
-|d0 d1 d2
-|e0 e1 e2
-|f0 f1 f2
.|printf -v 'T[@]:2:1' '%s %s %s' {g..i}{0..2};
.|printf '%s\n' "${T[@]}";
-|a0 a1 a2
-|d0 d1 d2
-|g0 g1 g2
-|f0 f1 f2
.|printf -v 'T[@]:-1:2' '%s %s %s' {a..c}{0..2};
.|printf '%s\n' "${T[@]}";
-|a0 a1 a2
-|d0 d1 d2
-|g0 g1 g2
-|a0 a1 a2
-|b0 b1 b2
Similar effect in part can be had with this code:
declare -i L=;
while read A B C;
do T[L++]="$A $B $C";
done < <(
printf '%s %s %s\n' {a..c}{0..2});
Thank you for your attention.