use strict;
use threads;
use threads::shared;
{
package ThreadableObj;
use Moose;
use threads::shared;
use Data::Dump qw/dump/;
sub BUILD {
my $self = shift;
# here the blessed() already be the version in threads::shared
bless shared_clone($self), ref($self);
print dump($self),"\n";
return $self;
}
has foo => ( is => 'rw', isa => 'Str' );
has bar => ( is => 'rw', isa => 'Int' )
}
# here dies
my $obj : shared = ThreadableObj->new(foo=>'foovalue');
####
Invalid value for shared scalar at XXXXX
####
bless({ bar => 123, foo => "foovalue" }, "ThreadableObj")