diff --git a/Utilities/ITK/Code/Common/itk_hash_map.h b/Utilities/ITK/Code/Common/itk_hash_map.h
index 9e37f4837b63b38c72b63e8e708c73ee07ef5cd1..9a1712fe452d4c6018267ddd8c1692e6e1a5395c 100644
--- a/Utilities/ITK/Code/Common/itk_hash_map.h
+++ b/Utilities/ITK/Code/Common/itk_hash_map.h
@@ -185,7 +185,9 @@ public:
   bool empty() const { return rep.empty(); }
   void swap(self& hs) { rep.swap(hs.rep); }
 
+#if _MSC_VER != 1600
   friend bool operator==ITK_FRIEND_TEMPLATE_FUNCTION_ARGUMENT(self)(const self &, const self &);
+#endif
 
   iterator begin() { return rep.begin(); }
   iterator end() { return rep.end(); }
@@ -289,7 +291,9 @@ public:
   bool empty() const { return rep.empty(); }
   void swap(self& hs) { rep.swap(hs.rep); }
 
+#if _MSC_VER != 1600
   friend bool operator==ITK_FRIEND_TEMPLATE_FUNCTION_ARGUMENT(self)(const self &, const self &);
+#endif
 
   iterator begin() { return rep.begin(); }
   iterator end() { return rep.end(); }
diff --git a/Utilities/ITK/Code/Common/itk_hashtable.h b/Utilities/ITK/Code/Common/itk_hashtable.h
index e166f493f50c1b378b3380f5de29fd5dde44ea2e..d07c3b3368356f25f0d1dd48d15b000139f4fff8 100644
--- a/Utilities/ITK/Code/Common/itk_hashtable.h
+++ b/Utilities/ITK/Code/Common/itk_hashtable.h
@@ -471,7 +471,9 @@ public:
 
   const_iterator end() const { return const_iterator((node*)0, this); }
 
+#if _MSC_VER != 1600
   friend bool operator==ITK_FRIEND_TEMPLATE_FUNCTION_ARGUMENT(self)(const self&,const self&);
+#endif
 
 public:
 
@@ -1144,14 +1146,17 @@ void hashtable_base<Value, Alloc>::copy_from(const hashtable_base<Value, Alloc>&
 
 // A few compatability fixes.  Placed here for automatic include in
 // both the hash_set and the hash_map sources.
+
 # if defined (_MSC_VER) || defined(__BORLANDC__) || ((defined(__ICC)||defined(__ECC)) && defined(linux))
 namespace std
 {
+#if _MSC_VER != 1600
 template <class T>
 struct identity : public std::unary_function<T, T> {
 public:
   const T& operator()(const T& x) const { return x; }
 };
+#endif
 }
 
 template <class _Pair>