--- dcpp/stdinc.h.orig
+++ dcpp/stdinc.h
@@ -123,7 +123,7 @@
 #include <boost/scoped_array.hpp>
 #include <boost/noncopyable.hpp>
 
-#if defined(_MSC_VER) || defined(_STLPORT_VERSION)
+#if defined(_MSC_VER) || defined(_STLPORT_VERSION) || defined(_LIBCPP_VERSION)
 
 #include <unordered_map>
 #include <unordered_set>
@@ -139,5 +139,8 @@
 
+#ifdef _LIBCPP_VERSION
+namespace std { namespace tr1 { using namespace std; }}
+#endif
 namespace dcpp {
 using namespace std;
 using namespace std::tr1;
 }
--- dcpp/CID.h.orig	2011-04-17 21:57:09.000000000 +0400
+++ dcpp/CID.h	2013-09-13 00:50:16.544145469 +0400
@@ -57,7 +57,10 @@
 
 } // namespace dcpp
 
-namespace std { namespace tr1 {
+namespace std {
+#ifndef _LIBCPP_VERSION
+namespace tr1 {
+#endif
 template<>
 struct hash<dcpp::CID> {
 	size_t operator()(const dcpp::CID& rhs) const {
@@ -65,6 +68,8 @@
 	}
 };
+#ifndef _LIBCPP_VERSION
 }
+#endif
 }
 
 #endif // !defined(CID_H)
--- dcpp/HashValue.h.orig	2011-04-17 21:57:09.000000000 +0400
+++ dcpp/HashValue.h	2013-09-13 00:48:18.173057104 +0400
@@ -46,12 +46,17 @@
 
 } // namespace dcpp
 
-namespace std { namespace tr1 {
+namespace std {
+#ifndef _LIBCPP_VERSION
+namespace tr1 {
+#endif
 template<typename T>
 struct hash<dcpp::HashValue<T> > {
 	size_t operator()(const dcpp::HashValue<T>& rhs) const { return *(size_t*)rhs.data; }
 };
+#ifndef _LIBCPP_VERSION
 }
+#endif
 }
 
 #endif // !defined(HASH_VALUE_H)