[Dune] Es wird immer besser ...
Robert Kloefkorn
robertk at mathematik.uni-freiburg.de
Thu Mar 27 17:58:51 CET 2003
Peter Bastian wrote:
> Hi,
>
>
> Hab gerade entdeckt, dass die autmatische Deduktion
> von template parametern auch für template template parameter
> funktioniert.
>
> damit kann man folgendes hinschreiben:
>
> ...
>
> template< int dim,
> int dimworld,
> class ct,
> template<int,int> class grid,
> template<int,int,int> class leveliterator,
> template<int,int,int> class entity>
> inline void foo (Grid<dim,dimworld,ct,grid,leveliterator,entity>& g)
> {
> for (leveliterator<0,dim,dimworld> i=g.lbegin<0>(0); i!=g.lend<0>(0);
> ++i)
> {
> std::cout << i->level() << std::endl;
> }
> }
>
> int main ()
> {
> // make object of concrete class
> SGrid<3,3> sgrid( Tupel<int,3>(1,1,2) , Tupel<double,3>(1.0,1.0,1.0) ,
> 8 );
>
> // call generic function
> foo(sgrid);
>
> return 0;
> }
>
> Der Aufruf foo(sgrid) deduziert auch die anderen templates (!), die
> das Grid benötigt. Damit arbeitet jetzt foo wirklich auf den
> Basisklassen und verwendet den vollen Barton-Nackman !
> Die Sache mit den nested classes können wir uns damit vollkommen
> sparen, d.h. man muss nun den LevelIterator nicht mehr aus dem Grid
> rausholen. Ich bin dafür wir machen es wie oben, denn dann sind alle
> LevelIterator auch miteinander kompatibel (Bei uns ist ein LevelIterator
> aus dem Grid ein anderer als der aus der Entity).
>
> Was meint ihr?
Super, auf dieses Problem war ich auch schon gestossen.
Das erweitert die Möglichkeiten erheblich. Ich bin übrigens gerade dabei
ein paar Speicher leaks zu entfernen. Dann werde ich mal wieder
auschecken und alles an die neuen Änderungen anpassen.
Performance check sehen übrigens sehr gut aus. D.h. es wird nicht mehr
Zeit für einen Gitterdurchlauf verbraucht, als ein normaler Aufruf eines
Gitterdurchlaufs in Albert.
Ansonsten schönen Feierabend
Robert
--
Robert Klöfkorn <robertk at mathematik.uni-freiburg.de>
Mathematisches Institut Tel: +49 (0) 761 203 5642
Abt. für Angewandte Mathematik Fax: +49 (0) 761 203 5632
Universität Freiburg
Hermann-Herder-Str. 10
79104 Freiburg
http://www.mathematik.uni-freiburg.de/IAM/homepages/robertk
More information about the Dune
mailing list