Because the object ID is stored in the object's scalar ref (i.e., $$self), overloading ${} deferencing is not allowed. I document this fact in the POD.
However, all other forms of object deferencing through overloading are supported: Stringify, numerify, boolify, arrayify, hashify, globify and codify. Object::InsideOut simplifies defining these operations through the use of subroutine attributes. For example, your code would become:
use Test::More 'no_plan';
package Foo::Bar; {
use Object::InsideOut;
sub numify :Numerify { 42 }
}
package main;
my $obj = Foo::Bar->new();
is(0 + $obj, 42);
Remember: There's always one more bug.