我想将 HTML 响应状态代码数字定义为一种类型,但不允许使用算术运算符,因为这对它们来说没有意义。
type Status_Code is range 100 .. 599;
function "+" (Left, Right : Status_Code) return Status_Code is
begin
pragma Assert (1 = -1);
return Left + Right;
end;
Run Code Online (Sandbox Code Playgroud)
上面 GNAT 上的代码片段会给出一个错误,指出断言将在运行时失败,但当我将两个数字加在一起时,这是错误的。当尝试对这样的类型进行算术时,有没有办法强制编译器错误或至少发出警告?
您可以将其声明为抽象:
function "+" (Left, Right : Status_Code) return Status_Code is abstract;
Run Code Online (Sandbox Code Playgroud)