{ %NORUN } program tw29546; {$mode objfpc} type TUtils = class sealed(TObject) public generic class function Iif(ACondition: Boolean; const ATrueValue, AFalseValue: T): T; static; end; generic class function TUtils.Iif(ACondition: Boolean; const ATrueValue, AFalseValue: T): T; begin if ACondition then Result := ATrueValue else Result := AFalseValue; end; var S: string; begin S := TUtils.specialize Iif(False, 'YES', 'NO'); S := TUtils.specialize Iif(True, 'YES', 'NO'); end.