From 5554511339341093216
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f78e5,6a0e273cd04a6fa1
X-Google-Attributes: gidf78e5,public
X-Google-ArrivalTime: 2002-01-16 08:00:03 PST
Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!dispose.news.demon.net!news.demon.co.uk!demon!mail2news.demon.co.uk!not-for-mail
From: pdimov@mmltd.net (Peter Dimov)
Newsgroups: comp.std.c++
Subject: Re: new meaning of explicit keyword
Date: Wed, 16 Jan 2002 15:59:49 GMT
Organization: http://groups.google.com/
Approved: Fergus Henderson <fjh@cs.mu.oz.au>, moderator of comp.std.c++
Message-ID: <7dc3b1ea.0201160443.a82cb81@posting.google.com>
References: <a1hsph$p4k$1@news.tpi.pl>	 <92ce342f.0201100428.49e3dd92@posting.google.com> <3C3DE3E6.F27385B2@acm.org>	 <bQm%7.65$dd2.1604@nreader3.kpnqwest.net> <3C3E11E4.E454ABB0@acm.org>	 <92ce342f.0201110304.3045ea38@posting.google.com> <3C3F961A.AFDD9708@acm.org> <l37caCEh31Q8Ew+G@robinton.ntlworld.com> <3C443846.C1742C70@acm.org>
X-Trace: mail2news.demon.co.uk 1011196793 mail2news:24972 mail2news mail2news.demon.co.uk
X-Complaints-To: abuse@demon.net
X-Mail2News-Path: news.demon.net!mulga.cs.mu.oz.au
X-Authentication-Warning: mulga.cs.mu.OZ.AU: fjh set sender to devnull@stump.algebra.com using -f
X-Robomod: STUMP, ichudov@algebra.com (Igor Chudov)
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
NNTP-Posting-Date: 16 Jan 2002 12:43:57 GMT
Lines: 41
Xref: archiver1.google.com comp.std.c++:9077

Pete Becker <petebecker@acm.org> wrote in message news:<3C443846.C1742C70@acm.org>...
> Francis Glassborow wrote:
> > There are times where we need
> > conversion (via conversion operators) for templates. Conversion
> > functions do not cut it because there is no uniform naming convention
> > for them. OTOH I do not want to allow the compiler to use my conversion
> > operator elsewhere for all the many reasons that we know that conversion
> > operators are often poor design.
> > 
> 
> There is no uniform naming convention for many things that we do inside
> templates. The solution is to specify requirements for the types that
> the template is instantiated on, such as having a conversion function
> with a particular name and calling convention. If class designers choose
> to require conversion operators, knowing that they provide the wrong
> semantics, then they've made a mistake. There is no need to change the
> language definition to "fix" this.

In this case, however, we have an uniform naming convention:
static_cast<T>(). Unfortunately we can't use it.

We can say

Base * pb;
Derived * pd = static_cast<Derived *>(pb);

but not

smart_ptr<Base> pb;
smart_ptr<Derived> pd = static_cast< smart_ptr<Derived> >(pb);

--
Peter Dimov
Multi Media Ltd.

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.research.att.com/~austern/csc/faq.html                ]



