public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 15:26 Falk Hueffner
0 siblings, 0 replies; 8+ messages in thread
From: Falk Hueffner @ 2003-02-08 15:26 UTC (permalink / raw)
To: paolo; +Cc: gcc-prs
The following reply was made to PR libstdc++/9626; it has been noted by GNATS.
From: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
To: Paolo Carlini <pcarlini@unitus.it>
Cc: paolo@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
gcc-gnats@gcc.gnu.org
Subject: Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
Date: 08 Feb 2003 16:16:38 +0100
Paolo Carlini <pcarlini@unitus.it> writes:
> Falk Hueffner wrote:
> >No. I pass a 4, but the constructor expects an A = vector<int>. The
> >only way to make a "vector<int>" from "4" is with an "explicit"
> >constructor.
>
> Why the constructor expects a vector<int>? Which constructor?
The constructor of vector<vector<int> >, as second argument.
--
Falk
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 15:36 Paolo Carlini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Carlini @ 2003-02-08 15:36 UTC (permalink / raw)
To: paolo; +Cc: gcc-prs
The following reply was made to PR libstdc++/9626; it has been noted by GNATS.
From: Paolo Carlini <pcarlini@unitus.it>
To: Cc: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>,
gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Subject: Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
Date: Sat, 08 Feb 2003 16:28:16 +0100
Well... really interesting.
I found a *very* interesting interchange on C++-moderated back in
May-2002, between John Potter, Carlos Moreno and others:
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&threadm=3cf85a1f.17498620%40news.earthlink.net&rnum=40&prev=/groups%3Fq%3Dvector%253Cvector%2Bgroup:comp.*%26start%3D30%26hl%3Dit%26lr%3D%26ie%3DUTF-8%26selm%3D3cf85a1f.17498620%2540news.earthlink.net%26rnum%3D40
It ends with them _agreeing_ that the syntax is _legal_ and John
replying to another guy:
> > When people ask me what the keyword 'explicit' is for I usually take a
> > vector in particular as an example: > Speaking of std::vector it has
> > explicit vector(size_type n, const T& value = T(),
> > const Allocator& = Allocator()); > so I'd expect that >
> vector< vector<int> > values (20, 30);
> > must NOT compile on a conformant implementation.
>
> However, 20 is not a size_type and it does not match that constructor.
> It matches
>
> template <class InputIterator>
> vector (InputIterator first, InputIterator last,
> Allocator const& = Allocator());
>
> Since int can't be an iterator, the implementation is required to make
> it act the same as
>
> vector(static_cast<size_type>(first), static_cast<value_type>(last));
>
> The second static_cast takes care of your concerns about explicit.
>
> See 23.1.1/9
>
> John
At this point I think we can safely close the report!
Paolo.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 15:25 paolo
0 siblings, 0 replies; 8+ messages in thread
From: paolo @ 2003-02-08 15:25 UTC (permalink / raw)
To: falk.hueffner, gcc-bugs, gcc-prs, paolo
Synopsis: g++ accepts vector<vector<int> > v(2, 4);
State-Changed-From-To: feedback->closed
State-Changed-By: paolo
State-Changed-When: Sat Feb 8 15:25:25 2003
State-Changed-Why:
Not illegal, for a _very_ subtle reason...
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 13:56 Paolo Carlini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Carlini @ 2003-02-08 13:56 UTC (permalink / raw)
To: paolo; +Cc: gcc-prs
The following reply was made to PR libstdc++/9626; it has been noted by GNATS.
From: Paolo Carlini <pcarlini@unitus.it>
To: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
Cc: paolo@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
gcc-gnats@gcc.gnu.org
Subject: Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
Date: Sat, 08 Feb 2003 14:55:17 +0100
Falk Hueffner wrote:
>No. I pass a 4, but the constructor expects an A = vector<int>. The
>only way to make a "vector<int>" from "4" is with an "explicit"
>constructor.
>
Why the constructor expects a vector<int>? Which constructor?
This constructor:
explicit vector(size_type n, const T& value = T(),
const Allocator& = Allocator())
expects a size_type!
Paolo.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 13:56 Falk Hueffner
0 siblings, 0 replies; 8+ messages in thread
From: Falk Hueffner @ 2003-02-08 13:56 UTC (permalink / raw)
To: paolo; +Cc: gcc-prs
The following reply was made to PR libstdc++/9626; it has been noted by GNATS.
From: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
To: paolo@gcc.gnu.org
Cc: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, gcc-gnats@gcc.gnu.org,
paolo@gcc.gnu.org
Subject: Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
Date: 08 Feb 2003 14:48:07 +0100
paolo@gcc.gnu.org writes:
> Synopsis: g++ accepts vector<vector<int> > v(2, 4);
>
> State-Changed-From-To: analyzed->feedback
> State-Changed-By: paolo
> State-Changed-When: Sat Feb 8 13:36:01 2003
> State-Changed-Why:
> On second thought, doesn't seem to me that your testcase is
> illegal. You are asking for a size 2 vector of size 4 vectors:
> there are no implicit conversions which should be prevented by
> explicit, since 4 is the argument of the explicit vector(const
> A& = A()) constructor of each of them and this seems perfectly
> legal. Agreed?
No. I pass a 4, but the constructor expects an A = vector<int>. The
only way to make a "vector<int>" from "4" is with an "explicit"
constructor.
--
Falk
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 13:46 Paolo Carlini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Carlini @ 2003-02-08 13:46 UTC (permalink / raw)
To: paolo; +Cc: gcc-prs
The following reply was made to PR libstdc++/9626; it has been noted by GNATS.
From: Paolo Carlini <pcarlini@unitus.it>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, paolo@gcc.gnu.org,
gcc-prs@gcc.gnu.org, falk.hueffner@student.uni-tuebingen.de
Cc:
Subject: Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
Date: Sat, 08 Feb 2003 14:38:36 +0100
> explicit vector(const A& = A()) constructor of each of them
sorry, of course I really meant:
explicit vector(size_type n, const T& value = T(),
const Allocator& = Allocator())
constructor of each of them...
Paolo.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 13:36 paolo
0 siblings, 0 replies; 8+ messages in thread
From: paolo @ 2003-02-08 13:36 UTC (permalink / raw)
To: falk.hueffner, gcc-bugs, gcc-prs, paolo
Synopsis: g++ accepts vector<vector<int> > v(2, 4);
State-Changed-From-To: analyzed->feedback
State-Changed-By: paolo
State-Changed-When: Sat Feb 8 13:36:01 2003
State-Changed-Why:
On second thought, doesn't seem to me that your testcase is
illegal. You are asking for a size 2 vector of size 4 vectors: there are no implicit conversions which should be prevented by explicit, since 4 is the argument of the
explicit vector(const A& = A()) constructor of each of them
and this seems perfectly legal.
Agreed?
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4);
@ 2003-02-08 9:25 paolo
0 siblings, 0 replies; 8+ messages in thread
From: paolo @ 2003-02-08 9:25 UTC (permalink / raw)
To: falk.hueffner, gcc-bugs, gcc-prs, nobody, paolo
Synopsis: g++ accepts vector<vector<int> > v(2, 4);
Responsible-Changed-From-To: unassigned->paolo
Responsible-Changed-By: paolo
Responsible-Changed-When: Sat Feb 8 09:25:05 2003
Responsible-Changed-Why:
Analyzing.
State-Changed-From-To: open->analyzed
State-Changed-By: paolo
State-Changed-When: Sat Feb 8 09:25:05 2003
State-Changed-Why:
Confirmed according to 23.2.4.1: seems an SGI extension.
Currently the explicit keyword is missing from the relevant
constructor and moreover, an additional one, non-standard,
is provided having the following signature
explicit vector(size_type n)
Will pool the list...
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9626
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2003-02-08 15:36 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-08 15:26 libstdc++/9626: g++ accepts vector<vector<int> > v(2, 4); Falk Hueffner
-- strict thread matches above, loose matches on Subject: below --
2003-02-08 15:36 Paolo Carlini
2003-02-08 15:25 paolo
2003-02-08 13:56 Paolo Carlini
2003-02-08 13:56 Falk Hueffner
2003-02-08 13:46 Paolo Carlini
2003-02-08 13:36 paolo
2003-02-08 9:25 paolo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).