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


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

Re: base_ostream template arguments

Path csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!transit3.readnews.com!news-out.readnews.com!transit4.readnews.com!panix!not-for-mail
From ruben safir <ruben@mrbrklyn.com>
Newsgroups comp.lang.c++
Subject Re: base_ostream template arguments
Date Mon, 13 Jun 2011 06:38:19 +0000 (UTC)
Organization PANIX Public Access Internet and UNIX, NYC
Lines 46
Message-ID <it4b8r$moe$3@reader1.panix.com> (permalink)
References <it44cp$ioc$5@reader1.panix.com> <3b3ff35c-2d57-4f96-a5dc-8a46b0aa15f7@a31g2000vbt.googlegroups.com>
NNTP-Posting-Host www2.mrbrklyn.com
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
X-Trace reader1.panix.com 1307947099 23310 96.57.23.82 (13 Jun 2011 06:38:19 GMT)
X-Complaints-To abuse@panix.com
NNTP-Posting-Date Mon, 13 Jun 2011 06:38:19 +0000 (UTC)
User-Agent Pan/0.133 (House of Butterflies)
Xref x330-a1.tempe.blueboxinc.net comp.lang.c++:6680

Show key headers only | View raw


On Sun, 12 Jun 2011 22:18:03 -0700, Öö Tiib wrote:

> On Jun 13, 7:40 am, ruben safir <ru...@mrbrklyn.com> wrote:
>> The base_ostream template is defined as follows (according to
>> Struostrup)
>>
>> template<class Ch, class Tr = char_traits<Ch> > class
>> std::basic_ostream : virtual public basic_ios<Ch, Tr > { public:
>>         virtual ~basic_ostream();
>> //...
>>
>> };
>>
>> since Tr is always defined as a function of Ch, why was it necessary
>> for two template parameters?
> 
> Tr is not always defined as char_traits<Ch>, it is default defined as
> char_traits<Ch>. You can put there your own custom-made traits as second
> template argument.


It's very interesting.  The very next template is for basic_ios which 
Strousup defines as this


template <class Ch, class TR = char_traits<Ch> >
public:
	typedef Ch char_type;
	typedef Tr traits_type;
	typedef typename Tr::int_type int_type;
	typedef typename Tr::pos_type pos_type;
	typedef typename Tr::off_type off_type;
};


It also defaults to the same type.  But what i find interesting and new
is the last 3 typedef's

	typedef typename Tr::int_type int_type;
	typedef typename Tr::pos_type pos_type;
	typedef typename Tr::off_type off_type;

There is no explanation to how any of these would be used and I've never
seen the keyword typename used outside of <>.  How does that work?

Ruben

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


Thread

base_ostream template arguments ruben safir <ruben@mrbrklyn.com> - 2011-06-13 04:40 +0000
  Re: base_ostream template arguments Öö Tiib <ootiib@hot.ee> - 2011-06-12 22:18 -0700
    Re: base_ostream template arguments ruben safir <ruben@mrbrklyn.com> - 2011-06-13 06:08 +0000
    Re: base_ostream template arguments ruben safir <ruben@mrbrklyn.com> - 2011-06-13 06:38 +0000
      Re: base_ostream template arguments Öö Tiib <ootiib@hot.ee> - 2011-06-13 01:45 -0700
  Re: base_ostream template arguments Saeed Amrollahi <amrollahi.saeed@gmail.com> - 2011-06-12 23:14 -0700
    Re: base_ostream template arguments ruben safir <ruben@mrbrklyn.com> - 2011-06-13 06:32 +0000
      Re: base_ostream template arguments Saeed Amrollahi <amrollahi.saeed@gmail.com> - 2011-06-13 00:08 -0700
        Re: base_ostream template arguments ruben safir <ruben@mrbrklyn.com> - 2011-06-13 03:17 -0400
        Re: base_ostream template arguments mrbrklyn <ceo.brooklyn@gmail.com> - 2011-06-13 12:45 -0700

csiph-web