From: SourceForge.net <no...@so...> - 2009-08-27 10:43:28
|
Bugs item #2845485, was opened at 2009-08-27 10:43 Message generated for change (Tracker Item Submitted) made by fraserross You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=396644&aid=2845485&group_id=29557 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Fraser (fraserross) Assigned to: Nobody/Anonymous (nobody) Summary: HierarchyGenerators.h Initial Comment: A number of changes can be made that I am summarising here. Here is all the required specialisations of GenScatterHierarchy: template <class T1, class T2, template <class> class Unit> class GenScatterHierarchy<Typelist<T1, T2>, Unit> : public GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit> , public GenScatterHierarchy<T2, Unit> { public: typedef Typelist<T1, T2> TList; // Insure that LeftBase is unique and therefore reachable typedef GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit> LeftBase; typedef GenScatterHierarchy<T2, Unit> RightBase; template <typename T> struct Rebind { typedef Unit<T> Result; }; }; template <class AtomicType, typename T2, template <class> class Unit> class GenScatterHierarchy<Private::ScatterHierarchyTag<AtomicType, T2>, Unit> : public Unit<AtomicType> { public: typedef Unit<AtomicType> LeftBase; }; template <template <class> class Unit> class GenScatterHierarchy<NullType, Unit> { }; FieldHelper can be in namespace Private. namespace Private { template <class H, unsigned int i> class FieldHelper; ... } Use Private:: here: template <int i, class H> typename Private::FieldHelper<H, i>::ResultType& Field(H &obj) { return Private::FieldHelper<H, i>::Do(obj); } This class can be removed: template < template <class, class> class Unit, class Root > class GenLinearHierarchy<NullType , Unit, Root> : public Root // is this better: Unit<NullType, Root> ? { }; ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=396644&aid=2845485&group_id=29557 |