A year has passed again.
3 //////////////////////////////////////////////////////////////////////
4 // Named "function" parameters
5 //////////////////////////////////////////////////////////////////////
14 named_fn() : _id(0), _val(1), _dim(2) {}
15 named_fn& id(int p) { _id = p ; return *this; }
16 named_fn& val(double p) { _val = p ; return *this; }
17 named_fn& dim(int p) { _dim = p ; return *this; }
20 //Itt van maga az algoritmus
26 //named_fn().id(3).val(2);
27 //named_fn().dim(4).id(3);
30 //////////////////////////////////////////////////////////////////////
31 // Named class template parameters (A)
32 //////////////////////////////////////////////////////////////////////
34 template<class A=int,class B=double>
42 template <class T> class SetAType : public Named_T<T,Btype> { };
43 template <class T> class SetBType : public Named_T<Atype,T> { };
46 // Named_T<>::SetAType<double>::SetBType<double>
48 //////////////////////////////////////////////////////////////////////
49 // Named class template parameters (A)
50 //////////////////////////////////////////////////////////////////////
58 template<class TR=_NTR>
63 typedef typename TR::Atype Atype;
64 typedef typename TR::Btype Btype;
70 struct ATR : public TR {
75 class SetAType : public Named_TR<ATR<T> > { };
78 struct BTR : public TR {
82 class SetBType : public Named_TR<BTR<T> > { };
85 Named_TR<TR> &setA(Atype _a) { a=_a; return *this;}
86 Named_TR<TR> &setB(Btype _b) { b=_b; return *this;}
92 //////////////////////////////////////////////////////////////////////
94 SetAType<T> SETA(T t) { SetAType<T> r; r.a=t; r.b=b; return r;}
96 SetBType<T> SETB(T t) { SetBType<T> r; r.a=a; r.b=t; return r;}
101 // Named_TR<>::SetAType<double> nt;
102 // Named_TR<>::SetBType<double>::SetAType<double> nt2;
103 // nt2.setA(5).setB(6).run();
106 // Named_TR<>().SETA(5.2).SETB(x).run();
108 // struct MyTr : public _NTR { typedef float Btype; };
111 // Named_TR<MyTr> d2; d2=d2;
115 // Sajnos ezt csak a fuggvenyen kivul lehet deklaralni:
116 struct MyTr : public _NTR { typedef float Btype; };
118 typedef Named_T<> Named_TN;
124 Named_T<>::SetAType<double> b;b=b;
125 Named_T<>::SetAType<double>::SetBType<int> c;c=c;
128 Named_TR<>::SetAType<double> b2;b2=b2;
129 Named_TR<>::SetAType<double>::SetBType<int> c2;c2=c2;
132 Named_TR<MyTr> d2; d2=d2;
135 named_fn().id(3).val(2);
136 named_fn().dim(4).id(3);
138 Named_TR<>::SetAType<double> nt;
139 Named_TR<>::SetBType<double>::SetAType<double> nt2;
140 nt2.setA(5).setB(6).run();
143 Named_TR<>().SETA(5.2).SETB(x).run();