Streaming unpacked structure

to stream a struct needs to be packed or not?
below code still works.

module tb_top();
  struct {shortint a;
          shortint b;
          }my_struct;
  int a;
  
  initial begin
    my_struct.a = 'haaaa;
    my_struct.b = 'hbbbb;
    a         = {>>8{my_struct}};
    my_struct = {<<7{a}};
    
    $display(" a : %h",a);
    $display(" struct.a : %h",my_struct.a);
    $display(" struct.b : %h",my_struct.b);
  end
endmodule: tb_top

The streaming operator works with all packable types. An unpacked structure or array is packable if all its elements are packable types (integral bit/logic/int).