Index: src/work/alpar/named-param-test4.cc
===================================================================
--- src/work/alpar/named-param-test4.cc	(revision 1105)
+++ src/work/alpar/named-param-test4.cc	(revision 1203)
@@ -1,23 +1,60 @@
+///\file 
+///Named template study
+
+///\e
+
+///\e
+///
 class AlgorithmDefaultTypes 
 {
 public:
+///\e
+
+///\e
+///
   typedef int Adat;
 };
 
+///\e
+
+///\e
+///
 template<class T = AlgorithmDefaultTypes>
 class AlgorithmTypes : public T 
 {
 public:
+///\e
+
+///\e
+///
   template<class X>
   class SetAdat : public T { X Adat; };
 };
 
+///\e
+
+///\e
+///
 template<class T = AlgorithmTypes<> >
 class AlgorithmDefaultDataFields : public T
 {
 protected:
+///\e
+
+///\e
+///
+  typedef T TypeTraits; //Jo ez a nev?
+protected:
+///\e
+
+///\e
+///
   typename T::Adat adat;
 };
 
+///\e
+
+///\e
+///
 template<class T = AlgorithmDefaultDataFields<> >
 class Algorithm : public T
@@ -32,4 +69,5 @@
     X adat;
     public:
+    typedef X Adat;
     _SetAdat() {}; //"Algorithm<>::_SetAdat<double> b;"-hez kell!!!!
                    // De az is rossz!!!!!
@@ -37,18 +75,57 @@
   };
   
+ ///\name Funtion Named Parameters
+  
+  ///@{
+
+  ///\e
+  
+  ///\e
+  ///
   template<class X>
   Algorithm<_SetAdat<X> > setAdat(const X &x) {
     return Algorithm<_SetAdat<X> >(_SetAdat<X>(*this,x));
   }
+
+  ///@}
+  ///\name Named Parameters
   
+  ///@{
+
+  ///\e
+  
+  ///\e
+  ///
+  template<class X>
+  class SetAdat :
+    public Algorithm<AlgorithmDefaultDataFields<
+    typename T::TypeTraits::template SetAdat<X> > >
+  {};
+  
+  ///@}  
+
+///\e
+
+///\e
+///
   Algorithm &setIntAdat(int i) {_intAdat=i;return *this;}
   //vagy:
+///Vagy
+
+///Vagy...
+///
   Algorithm &intAdat(int i) {_intAdat=i;return *this;}
   
+  //Maga az algoritmus!!!!!!!
+///\e
+
+///\e
+///
   typename T::Adat run()
   {
     //Itt csinalunk valamit
-    return typename T::Adat();    
+    return adat;    
   }
+
   ~Algorithm()
   {
@@ -57,4 +134,8 @@
 };
 
+///\e
+
+///\e
+///
 Algorithm<> algorithm() 
 {
@@ -65,13 +146,12 @@
 {
   Algorithm<> a;
+  a.run();
 
-  Algorithm<>::_SetAdat<double> b; b=b;//Ez itt nem az, amit szeretnenk!!! 
+//   Algorithm<>::_SetAdat<double> b; b=b;//Ez itt nem az, amit szeretnenk!!! 
+//   //  b.run();
+  
+  Algorithm<>::SetAdat<double> c; //Algorithm<>::Adat<double> c; jobb vo'na
+  c.run();
 
-  Algorithm<>::SetAdat<double> c; c=c; //Ez itt nem az, amit szeretnenk!!!
-
-  a.run();
-  //  b.run();
-  //  c.run();
-  
   algorithm().run();
   algorithm().setAdat(5.2).run();
