Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!news.giganews.com.POSTED!not-for-mail NNTP-Posting-Date: Thu, 18 Aug 2011 08:00:15 -0500 Return-Path: Sender: std-cpp-request@vandevoorde.com Approved: james.dennett@gmail.com Message-ID: <2011081706332351646-pete@versatilecodingcom> Newsgroups: comp.lang.c++.moderated,comp.std.c++,comp.lang.c++ From: Pete Becker Subject: Re: New strongly type enum proposal featuring inherited enums Organization: Roundhouse Consulting, Ltd. References: <4e49ea26$2@news.x-privat.org> Content-Type: text/plain; charset=iso-8859-1; format=flowed X-Original-Date: Wed, 17 Aug 2011 06:33:23 -0400 X-Submission-Address: std-c++-submit@vandevoorde.com To: undisclosed-recipients:; Date: Thu, 18 Aug 2011 07:51:59 CST Lines: 48 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-N0T2p6P2Y4IppgJiibwykcPO+LtCxY9a/wDwpuiuWlkmBDO7peYdG0NK0jKZEDSdxIFL7mhP0s/6KUs!/MKRnzXVkkxklMifWQWG5g2dYup4ltibPD2bsVPmUrn3JEzmhT4ZYrp1SLtIr7K4jsy4gGCu+w== X-Complaints-To: abuse@giganews.com X-DMCA-Notifications: http://www.giganews.com/info/dmca.html X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2841 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c++.moderated:1831 comp.std.c++:229 comp.lang.c++:9042 On 2011-08-16 21:28:17 +0000, Phil Bouchard said: > Hi, > > Is it too late to change the strongly type enum? Yes, C++11 has been unanimously approved. It will be an official standard in a few weeks. No, work is just starting on the next version of the C++ standard. > I have a proposal > that is much cleaner than what is on its way. > > Right now we have: > enum class Val: unsigned long { E1, E2, E3, E4 }; > > Comments: > 1) This design is bad because the ':' sign is reserved for inheritance. Really? Where does the standard say that it's "reserved"? It's currently used to indicate inheritance, to separate two expressions in a ternary operator, and to mark the size of a bitfield. > > 2) Inheriting from another enum would be quite useful. For example: > enum class Widget {button, combobox, listview}; > enum class SuperWidget : Widget {iconview} > > This way iconview would be equal to 3, not 0. Sure. That's not precluded by using ':' to indicate that an enum is based on an integral type. -- Pete Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The Standard C++ Library Extensions: a Tutorial and Reference (www.petebecker.com/tr1book) [ comp.std.c++ is moderated. To submit articles, try posting with your ] [ newsreader. If that fails, use mailto:std-cpp-submit@vandevoorde.com ] [ --- Please see the FAQ before posting. --- ] [ FAQ: http://www.comeaucomputing.com/csc/faq.html ]