🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #16191

Re: Typ należący do parametru template'a (czyli STL w parametrze)

#16191
From: Marcin 'Qrczak' Kowalczyk
Date: Tue, 10 Apr 2007 22:50
39 lines
3247 bytes
Dnia 10-04-2007, wto o godzinie 11:46 -0500, A.L. napisał(a):

> Czy moglby Pan przedstawic ZASADNICE roznice miedzy "parametryzowaniem
> typu kolekcji" przy pomocy templates i M4, to znaczy przedstawic
> zasadnicze rozneice meidzy funkcjonalnosia templates i M4 w tym
> kontekscie i TYLKO tym?

Szablon może wydedukować typ na podstawie wyrażenia zależnego od tego
typu, a następnie użyć kodu parametryzowanego tym typem. Zewnętrzny
generator makr musi mieć ten typ podany jawnie. Na przykład można
wydedukować typ elementów kolekcji z wyrażenia opisującego iterator
po tej kolekcji, żeby potem użyć odpowiedniego dla tego typu operatora
przypisania.

Konkretyzacje szablonów są zbierane ze wszystkich jednostek kompilacji.
Jeśli dana konkretyzacja pojawi się kilka razy, to jej wystąpienia są
scalane przez linker. Przy generowaniu konkretyzacji ręcznie programista
musi zapewnić, że każda użyta konkretyzacja pojawi się raz i tylko raz,
co jest trudne do pogodzenia z modularnością.

Szablon pozwala wybrać implementację operacji w zależności od cech typu,
jakim ta operacja jest parametryzowana (te cechy są zapisane w tzw.
traits, które są specjalizowane poszczególnymi typami albo schematami
typów).

> Bylbym rozneiz wdzieczny za rozwineicie tematu w kwestii "Java 1.4",
> to znaczy rozwineicie mysli "to co sie stosowalo w javei 1.4" i
> konkretnie co sie w owej wersji javy stosowalo?

Dany obiekt kolekcji w Javie 1.4 (poza tablicami) ma typ niezależny od
typu elementów, nawet jeśli zawiera tylko elementy konkretnego typu.
Obiekt odczytany z kolekcji ma z reguły statyczny typ Object, który
dopiero należy zrzutować na właściwy typ elementów danej kolekcji,
żeby wykonać na nim operację zależną od tego typu.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID: <1176245435.15624.58.camel@qrnik>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <slrnf1kjcu.ave.lrem@lrem.maxnet> <evdlhb$f4p$1@inews.gazeta.pl> <evdqq6$qrs$3@news.onet.pl> <desk13psu2rvekht584uoirc0djahrk1dv@4ax.com> <87irc5fnin.fsf@hector.domek> <4u0l13p53mf3nous2u96ulgidcqovr6p5n@4ax.com> <eve28a$4kl$1@inews.gazeta.pl> <1176216124.9413.21.camel@qrnik> <tv8n131le3vcqu8o70bp60vjdgu4lm1u2l@4ax.com> <1176222180.9413.31.camel@qrnik> <qlfn131km9fnjkrbf9gnkktqs3nfuj23gl@4ax.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.objects
Subject: Re: Typ należący do parametru
 template'a (czyli STL w parametrze)
Date: Wed, 11 Apr 2007 00:50:35 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 54
Message-ID: <1176245435.15624.58.camel@qrnik>
References: <slrnf1kjcu.ave.lrem@lrem.maxnet> <evdlhb$f4p$1@inews.gazeta.pl>  <evdqq6$qrs$3@news.onet.pl> <desk13psu2rvekht584uoirc0djahrk1dv@4ax.com>  <87irc5fnin.fsf@hector.domek> <4u0l13p53mf3nous2u96ulgidcqovr6p5n@4ax.com>  <eve28a$4kl$1@inews.gazeta.pl> <1176216124.9413.21.camel@qrnik>  <tv8n131le3vcqu8o70bp60vjdgu4lm1u2l@4ax.com>  <1176222180.9413.31.camel@qrnik>  <qlfn131km9fnjkrbf9gnkktqs3nfuj23gl@4ax.com>
NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1176245688 19406 217.96.225.87 (10 Apr 2007 22:54:48 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Tue, 10 Apr 2007 22:54:48 +0000 (UTC)
In-Reply-To: <qlfn131km9fnjkrbf9gnkktqs3nfuj23gl@4ax.com>
X-Mailer: Evolution 2.8.3 PLD Linux
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit