From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 492 invoked by alias); 8 Feb 2003 15:36:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 475 invoked by uid 71); 8 Feb 2003 15:36:00 -0000 Date: Sat, 08 Feb 2003 15:36:00 -0000 Message-ID: <20030208153600.474.qmail@sources.redhat.com> To: paolo@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Paolo Carlini Subject: Re: libstdc++/9626: g++ accepts vector > v(2, 4); Reply-To: Paolo Carlini X-SW-Source: 2003-02/txt/msg00406.txt.bz2 List-Id: The following reply was made to PR libstdc++/9626; it has been noted by GNATS. From: Paolo Carlini To: Cc: Falk Hueffner , gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: libstdc++/9626: g++ accepts vector > 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 > 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 > 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(first), static_cast(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