Index: src/work/alpar/smart_graph.h
===================================================================
--- src/work/alpar/smart_graph.h	(revision 209)
+++ src/work/alpar/smart_graph.h	(revision 215)
@@ -372,10 +372,15 @@
       }
 
-      void erase(const Node k) { }
+      void erase(const Node) { }
       
       void set(Node n, T a) { container[n.n]=a; }
       //T get(Node n) const { return container[n.n]; }
-      T& operator[](Node n) { return container[n.n]; }
-      const T& operator[](Node n) const { return container[n.n]; }
+      //Hajjaj:
+      //T& operator[](Node n) { return container[n.n]; }
+      typename std::vector<T>::reference
+      operator[](Node n) { return container[n.n]; }
+      //const T& operator[](Node n) const { return container[n.n]; }
+      typename std::vector<T>::const_reference 
+      operator[](Node n) const { return container[n.n]; }
 
       ///\warning There is no safety check at all!
@@ -459,10 +464,12 @@
 	if(k.n>=int(container.size())) container.resize(k.n+1);
       }
-      void erase(const Edge k) { }
+      void erase(const Edge) { }
       
       void set(Edge n, T a) { container[n.n]=a; }
       //T get(Edge n) const { return container[n.n]; }
-      T& operator[](Edge n) { return container[n.n]; }
-      const T& operator[](Edge n) const { return container[n.n]; }
+      typename std::vector<T>::reference
+      operator[](Edge n) { return container[n.n]; }
+      typename std::vector<T>::const_reference
+      operator[](Edge n) const { return container[n.n]; }
 
       ///\warning There is no safety check at all!
@@ -605,6 +612,8 @@
       void set(Edge n, T a) { container[n.idref()/2]=a; }
       //T get(Edge n) const { return container[n.idref()/2]; }
-      T& operator[](Edge n) { return container[n.idref()/2]; }
-      const T& operator[](Edge n) const { return container[n.idref()/2]; }
+      typename std::vector<T>::reference
+      operator[](Edge n) { return container[n.idref()/2]; }
+      typename std::vector<T>::const_reference
+      operator[](Edge n) const { return container[n.idref()/2]; }
 
       ///\warning There is no safety check at all!
