Ah. Then you can use a traits-type template with specialization to "choose" the appropriate type:
ggCode:template <typename T, typename edgeType> struct edgeTypeTraits; // no impl. - just for specialization template <typename T> struct edgeTypeTraits<T, edge> // specialized for edge { typedef boost::shared_ptr<vertex<T> > vertexPtr_t; typedef std::vector<vertexPtr_t> allVertex_t; };//edgeTypeTraits<T, edge> template <typename T> struct edgeTypeTraits<T, arcs> // specialized for arcs { typedef boost::shared_ptr<vertex<T, arcs> > vertexPtr_t; typedef std::vector<vertexPtr_t> allVertex_t; };//edgeTypeTraits<T, edge> template <typename T, typename edgeType = edge> struct graph { typedef typename edgeTypeTraits<T, edgeType>::vertexPtr_t vertexPtr_t; typedef typename edgeTypeTraits<T, edgeType>::allVertex_t allVertex_t; vertexPtr_t m_vp; allVertex_t m_av; };//graph




Reply With Quote