From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!border1.nntp.ams1.giganews.com!border2.nntp.ams1.giganews.com!nntp.giganews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer01.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fx10.fr7.POSTED!not-for-mail Subject: Re: Ada.Containers.Vectors Newsgroups: comp.lang.ada References: <3516c666-ef65-4e54-89e9-03f14f293493@googlegroups.com> From: Per Sandberg User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: <3516c666-ef65-4e54-89e9-03f14f293493@googlegroups.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Message-ID: X-Complaints-To: abuse@usenet.se NNTP-Posting-Date: Mon, 26 Jun 2017 18:06:02 UTC Organization: usenet.se Date: Mon, 26 Jun 2017 20:06:02 +0200 X-Received-Body-CRC: 2236185544 X-Received-Bytes: 2792 X-Original-Bytes: 2616 Xref: news.eternal-september.org comp.lang.ada:47130 Date: 2017-06-26T20:06:02+02:00 List-Id: Hi A answer is that the compiler don't know if it should use the "=" for "Constant_Reference_Type'(F (J)))" or "Integer'(F (J))". Its a bit like: --------------------------------------- procedure put(Item : Integer); procedure put(Item : Long_Integer); procedure put(Item : Long_Long_Integer); ---------------------- And then in the code: put(2); -- This wont compile you have to state one of the following: put(Integer'(2)); put(Long_Integer'(2)); put(Long_Long_Integer'(2)); /Per Den 2017-06-26 kl. 18:39, skrev hnptz@yahoo.de: > Here is my code: > > with Ada.Containers; use Ada.Containers; > with Ada.Containers.Vectors; > package RGF is > package IV is new Vectors(Natural,Integer); > use IV; > procedure GenerateRGF(m : Integer; > f : in out Vector); > end RGF; > > package body RGF is > use IV; > procedure GenerateRGF(m : Integer; > f : in out Vector) is > done : Boolean := False; > fmax : Vector; > j : Integer; > begin > for i in 1..m loop > f(i):=1; > fmax(i) := 2; > end loop; > while not done loop > j := m+1; > loop > j := j-1; > exit when f(j) /= fmax(j); > end loop; > if j > 1 then > f(j) := f(j)+1; > for i in j+1 .. m loop > f(i):=1; > if f(j) = fmax(j) then > fmax(i):=fmax(j)+1; > else > fmax(i):=fmax(j); > end if; > end loop; > else > done := True; > end if; > end loop; > end GenerateRGF; > > end RGF; > > As a result I get "ambiguous operands for equality" for /= and =. How to resolve these ambiguities? > > Best, > > Gilbert > > >