{ package Scalar; use Moose::Role;

BEGIN { parameter T => { isa => 'Moose::Meta::TypeConstraint' } };

has 'val' => (is => 'ro', isa => T);

requires 'eq';

sub not_eq { ! (shift)->eq(shift) }
}

is_deeply( Scalar->meta->parameters, { T => { isa => 'Moose::Meta::TypeConstraint' } }, '... got the right parameters in the role' );

{ package Integers; use Moose; use Moose::Util::TypeConstraints;

with Scalar => { T => find_type_constraint('Int') };

sub eq { shift == shift }
}