Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #7894

Re: Traits in STL

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!news.musoftware.de!wum.musoftware.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c++
Subject Re: Traits in STL
Date Sun, 17 Jul 2011 12:08:03 +1200
Lines 49
Message-ID <98enh3Fi81U3@mid.individual.net> (permalink)
References <04673f16-5afd-47f2-9266-e3f4a00fec6a@fv14g2000vbb.googlegroups.com> <98em9fFi81U2@mid.individual.net> <95445e75-8918-4037-b24e-63826ea6e40a@s17g2000yqs.googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
X-Trace individual.net lwygx82E1gNJg0MLLOxcEAHhDPcwc+FSxTSgMVKy/yqL/M5oE7
Cancel-Lock sha1:3/D2C0TvkW/6Sola1NmPOahcmWU=
User-Agent Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.2.9) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.4
In-Reply-To <95445e75-8918-4037-b24e-63826ea6e40a@s17g2000yqs.googlegroups.com>
Xref x330-a1.tempe.blueboxinc.net comp.lang.c++:7894

Show key headers only | View raw


On 07/17/11 11:54 AM, Narinder wrote:
> On Jul 17, 12:46 am, Ian Collins<ian-n...@hotmail.com>  wrote:
>> On 07/17/11 11:36 AM, Narinder wrote:
>>> Hello
>>
>>> I am somewhat curious about the reason for the way types in the STL
>>> are dependant on trait classes. For example the template class
>>> basic_string is defined as :
>>
>>> template<class charT,
>>>            class traits = char_traits<charT>,
>>>              class Allocator = allocator<charT>    >
>>
>>> class basic_string;
>>
>>> but not as:
>>
>>> template<class charT,
>>>            template<class>    class traits_t = char_traits,
>>>              template<class>    class Allocator_t = allocator>
>>
>>> class basic_string
>>> {
>>>     typedef traits_t<charT>    traits;
>>>     typedef Allocator_t<charT>    Allocator;
>>> ....
>>
>>> You would think (or perhaps not) that the second approach is less
>>> error prone since it would be less likely that your traits would be
>>> inconsistent with the char type. The only reason I can think of is
>>> that you may have a traits class specifically for char which wouldn't
>>> make sense for any other types and thus wouldn't need to be a
>>> template. In that case you could always write it as template class and
>>> use traits to activate it only for char types.
>>
>> Another reason could be a lot of compilers didn't support template
>> template parameters when the standard was published (as an aside, I
>> don't think template template parameters are used anywhere in the
>> current standard library).  Not being able to support std:;string would
>> have been a bit of a problem!
>
> hmmm ... there something quite disturbing about that. Surely the
> implementation of the compilers should depend on the standard not the
> other way round ...

Imagine where we'd be if the standard library required export....

-- 
Ian Collins

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Traits in STL Narinder <narinder.claire@gmail.com> - 2011-07-16 16:36 -0700
  Re: Traits in STL Ian Collins <ian-news@hotmail.com> - 2011-07-17 11:46 +1200
    Re: Traits in STL Narinder <narinder.claire@gmail.com> - 2011-07-16 16:54 -0700
      Re: Traits in STL Ian Collins <ian-news@hotmail.com> - 2011-07-17 12:08 +1200
        Re: Traits in STL Narinder <narinder.claire@gmail.com> - 2011-07-16 17:13 -0700
          Re: Traits in STL Ian Collins <ian-news@hotmail.com> - 2011-07-17 14:09 +1200
  Re: Traits in STL Qi <no@no.com> - 2011-07-17 09:47 +0800

csiph-web