Ok, since everyone wants the patch, here it is the _right_ way to fix the compilation. The thing is that you can't have a specialized template function as a friend. You have to specify the whole template parameters in the friend declaration and make sure to use typenames that don't clash with the current ones.
The way the definition was written was wrong. The way I rewritten it is good in both gcc and MSVC 2005 / 2008. (I used HTML mail so the lines won't be cut) ----CUT HERE---- Index: JavaScriptCore/wtf/ListHashSet.h =================================================================== --- JavaScriptCore/wtf/ListHashSet.h (revision 35445) +++ JavaScriptCore/wtf/ListHashSet.h (working copy) @@ -110,7 +110,8 @@ iterator makeIterator(Node*); const_iterator makeConstIterator(Node*) const; - friend void deleteAllValues<>(const ListHashSet&); + template<typename ValueArg_, typename HashArg_> + friend void deleteAllValues(const ListHashSet<ValueArg_, HashArg_>&); ImplType m_impl; Node* m_head; Index: JavaScriptCore/wtf/HashSet.h =================================================================== --- JavaScriptCore/wtf/HashSet.h (revision 35445) +++ JavaScriptCore/wtf/HashSet.h (working copy) @@ -90,7 +90,8 @@ void clear(); private: - friend void deleteAllValues<>(const HashSet&); + template<typename ValueArg_, typename HashArg_, typename TraitsArg_> + friend void deleteAllValues(const HashSet<ValueArg_, HashArg_, TraitsArg_>&); HashTableType m_impl; }; Index: JavaScriptCore/wtf/PassRefPtr.h =================================================================== --- JavaScriptCore/wtf/PassRefPtr.h (revision 35445) +++ JavaScriptCore/wtf/PassRefPtr.h (working copy) @@ -65,8 +65,11 @@ template <typename U> PassRefPtr& operator=(const PassRefPtr<U>&); template <typename U> PassRefPtr& operator=(const RefPtr<U>&); - friend PassRefPtr adoptRef<T>(T*); + private: + template<typename T_> + friend PassRefPtr<T_> adoptRef(T_* p); + // adopting constructor PassRefPtr(T* ptr, bool) : m_ptr(ptr) {} mutable T* m_ptr; Index: WebCore/platform/DeprecatedValueList.h =================================================================== --- WebCore/platform/DeprecatedValueList.h (revision 35445) +++ WebCore/platform/DeprecatedValueList.h (working copy) @@ -128,7 +128,8 @@ DeprecatedValueList &operator+=(const T &value) { impl.appendNode(new DeprecatedValueListNode<T>(value)); return *this; } DeprecatedValueList &operator<<(const T &value) { impl.appendNode(new DeprecatedValueListNode<T>(value)); return *this; } - friend bool operator==<>(const DeprecatedValueList<T> &, const DeprecatedValueList<T> &); + template<class T_> + friend bool operator==(const DeprecatedValueList<T_> &, const DeprecatedValueList<T_> &); private: DeprecatedValueListImpl impl; --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Chromium-dev" group. To post to this group, send email to chromium-dev@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/chromium-dev?hl=en -~----------~----~----~----~------~----~------~--~---