We've been using this patch at work for years, and I just forgot to contribute it back. I hope you find it worth applying.
I believe the typical use case was: my $dt = $param || DateTime->now(); In this case $param is used in boolean context, which makes a fallback call to _stringify(). With the patch, "boolean" just returns true. The stringification change is a micro-optimization, it is not that important. # optimize boolean and string use overload '""' => sub { $_[0]->ymd('-') . 'T' . $_[0]->hms(':') }, bool => sub { 1 }, '<=>' => '_compare_overload', 'cmp' => '_compare_overload', '-' => '_subtract_overload', '+' => '_add_overload', fallback => 1;