Hi, all! I'm getting strange compiler error message: > type/value mismatch at argument 2 in template parameter list for ‘template<class T, link<T> T::* mem> struct base’ > expected a constant of type ‘link<T> T::*’, got ‘link<T> T::*’ , where first ‘link<T> T::*’ is identical to second one. The code is following: ------------------------------------------- template<class T> class link; template<class T, link<T> T::*mem> class base; template<class T> class link { //here I want to declare 'base' to be friend of 'link', //not quite sure how to do it, any suggestions? friend class base<T, link<T> T::*>; // <-- this line triggers error }; ------------------------------------------- gcc -v: gcc version 4.0.2 20051125 (Red Hat 4.0.2-8) Is it compiler's bug (error message makes no sense, anyway...), or the code must be written differently? Best regards, Arturs Zoldners