Yes, but that is also taken by the compiler, hence the hardcast already works.
And as such these four all fail with impossible operator overload:
{$mode objfpc}
operator explicit(const value:integer):Boolean;
begin
Result := value <> 0;
end;
operator :=(const value:integer):Boolean;
begin
Result := value <> 0;
end;
operator explicit(const value:Longint):LongBool;
begin
Result := value <> 0;
end;
operator :=(const value:longint):Longbool;
begin
Result := value <> 0;
end;
Which is rather a pity, since assignment from integer to boolean doesn't work without a cast, so implicit seems not to work at all. Is this a bug, Sven?
Especially longbool implicit assignment from a longint has scenarios that are useful, like preventing execution of a division if a value evaluates to false.