This introduces an extra dependency (Type::Tie, which itself has a dependency on Hash::FieldHash), so I'd certainly understand if you didn't want to accept it.
However, I think it has some advantages over the current typed array implementation:
It's about 60% faster, according to my very basic benchmarking of
my $arr = array_of(Int, 0..99);
$arr->push(0..9) for 0..99
It makes List::Objects::WithUtils::Array::Typed into a fairly trivial subclass of List::Objects::WithUtils::Array; apart from the constructor you no longer need to override any methods. (I think this is the main reason for the speed-up.)
This is the reason I implemented it to begin with: using the @{} overload no longer bypasses the type checks and coercions, so people can happily do push @{$typedarray}, $value.
This introduces an extra dependency (Type::Tie, which itself has a dependency on Hash::FieldHash), so I'd certainly understand if you didn't want to accept it.
However, I think it has some advantages over the current typed array implementation:
@{}
overload no longer bypasses the type checks and coercions, so people can happily dopush @{$typedarray}, $value
.