Generics 我是否可以将泛型类型参数限制为需要默认值方面?

Generics 我是否可以将泛型类型参数限制为需要默认值方面?,generics,ada,Generics,Ada,Ada 2012为类型提供了一个默认值方面。是否有任何方法限制泛型类型参数要求它们具有默认值(或者是否有检查任何方面的通用方法?) 基本上,我的问题是,下面的例子是否安全。目前gnat发出警告 main.adb:6:03:警告:已读取变量“Var”,但从未分配[-gnatwv 当我没有使用默认值=>10.0定义MyFloat时 -- main.adb with MyProc; procedure test is type MyFloat is new Float with Default_

Ada 2012为类型提供了一个
默认值
方面。是否有任何方法限制泛型类型参数要求它们具有默认值(或者是否有检查任何方面的通用方法?)

基本上,我的问题是,下面的例子是否安全。目前gnat发出警告

main.adb:6:03:警告:已读取变量“Var”,但从未分配[-gnatwv

当我没有使用默认值=>10.0定义MyFloat时

-- main.adb
with MyProc;

procedure test is
  type MyFloat is new Float with Default_Value => 10.0;
  package P is new MyProc (MyFloat);
  Var : P.Bla;
  Var2 : MyFloat := P.Stuff (Var);
begin
  null;
end test;

-- MyProc.ads
generic
  type MyTypeWithDefault is private;
package MyProc is
  type Bla is tagged private;
  function Stuff (Self : Bla) return MyTypeWithDefault;
private
  type Bla is tagged record
    Data : MyTypeWithDefault;
  end record;
end MyProc;

-- MyProc.adb
package body MyProc is
  function Stuff (Self : Bla) return MyTypeWithDefault is
  begin
    return Self.Data;
  end Stuff;
end MyProc;

您可以采用2012年《美国残疾人法案》之前的风格:

generic
  type MyTypeWithDefault is private;
  Default_Value : in MyTypeWithDefault;
package MyProc is
  type Bla is tagged private;
  function Stuff (Self : Bla) return MyTypeWithDefault;
private
  type Bla is tagged record
    Data : MyTypeWithDefault:= Default_Value;
  end record;
end MyProc;
但您确实提出了一个很好的观点;应该有某种方法在泛型的形式参数中指定新的方面