[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