src/work/alpar/named-param-test2.cc
author alpar
Thu, 31 Mar 2005 14:04:13 +0000
changeset 1284 b941d044f87b
permissions -rw-r--r--
SmartGraph can also split() a node!
     1 struct TR 
     2 {
     3   int a;
     4   int b;
     5   int c;
     6 };
     7 
     8 template<class T> struct D
     9 {
    10   T t;
    11   
    12   D(const T &tt) :t(tt) {};
    13   
    14   template<class X> struct TA : public T {
    15     X a;
    16     TA(const T &t,const X& x) : T(t), a(x) {};
    17   };
    18   template<class X> D<TA<X> > setA(const X &x) {
    19     return D<TA<X> >(TA<X>(this->t,x));
    20   }
    21 
    22   template<class X> struct TB : public T {
    23     X b;
    24     TB(const T &t,const X& x) : T(t), b(x) {};
    25   };
    26 
    27   template<class X> D<TB<X> > setB(const X &x) {
    28     return D<TB<X> >(TB<X>(this->t,x));
    29   }
    30 
    31   template<class X> struct TC : public T {
    32     X c;
    33     TC(const T &t,const X& x) : T(t), c(x) {};
    34   };
    35 
    36   template<class X> D<TC<X> > setC(const X &x) {
    37     return D<TC<X> >(TC<X>(this->t,x));
    38   }
    39   ~D()
    40   {
    41     //Itt csinalunk valamit
    42   }
    43 };
    44 
    45 D<TR> d() 
    46 {
    47   return D<TR>(TR());
    48 }
    49 
    50 int main() 
    51 {
    52   d();
    53   d().setA(5.5).setB(10).setC(1.5e12);
    54 }