Classes | |
struct | View0< Thing > |
View0 enables you to write:. More... | |
struct | View1< Thing, Sub > |
View1 enables you to write:. More... | |
struct | View2< Thing, Sub1, Sub2 > |
View2 enables you to write:. More... | |
struct | View3< Thing, Sub1, Sub2, Sub3 > |
View3 enables you to write:. More... | |
struct | View4< Thing, Sub1, Sub2, Sub3, Sub4 > |
View4 enables you to write:. More... | |
struct | View5< Thing, Sub1, Sub2, Sub3, Sub4, Sub5 > |
View5 enables you to write:. More... | |
struct | View6< Thing, Sub1, Sub2, Sub3, Sub4, Sub5, Sub6 > |
View6 enables you to write:. More... | |
struct | View7< Thing, Sub1, Sub2, Sub3, Sub4, Sub5, Sub6, Sub7 > |
View7 enables you to write:. More... |
You should be able to write code like:
A a; B b; typename View1<A,B>::Type_t c = a(b);
ViewN will also give the type for the read() member function in arrays and fields.
To define the view properties for a new class, you should specialize View for that class. Reliance on the partial specialization ordering rules for more than one argument is a very bad thing, so never define View for a particular domain and general A. (It will be common for us to define View for general domains with a particular A, so specializations with general A would also require complete specializations in order to avoid ambiguity.)