Rename the extracted boost subdirectory to ndnboost
diff --git a/ndnboost/smart_ptr/detail/array_traits.hpp b/ndnboost/smart_ptr/detail/array_traits.hpp
new file mode 100644
index 0000000..70d2391
--- /dev/null
+++ b/ndnboost/smart_ptr/detail/array_traits.hpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2012 Glen Joseph Fernandes 
+ * glenfe at live dot com
+ *
+ * Distributed under the Boost Software License, 
+ * Version 1.0. (See accompanying file LICENSE_1_0.txt 
+ * or copy at http://boost.org/LICENSE_1_0.txt)
+ */
+#ifndef BOOST_SMART_PTR_DETAIL_ARRAY_TRAITS_HPP
+#define BOOST_SMART_PTR_DETAIL_ARRAY_TRAITS_HPP
+
+#include <ndnboost/type_traits/remove_cv.hpp>
+
+namespace ndnboost {
+    namespace detail {
+        template<typename T>
+        struct array_base {
+            typedef typename ndnboost::remove_cv<T>::type type;
+        };
+        template<typename T>
+        struct array_base<T[]> {
+            typedef typename array_base<T>::type type;
+        };
+        template<typename T, std::size_t N>
+        struct array_base<T[N]> {
+            typedef typename array_base<T>::type type;
+        };
+        template<typename T>
+        struct array_total {
+            enum {
+                size = 1
+            };
+        };
+        template<typename T, std::size_t N>
+        struct array_total<T[N]> {
+            enum {
+                size = N * array_total<T>::size
+            };
+        };
+        template<typename T> 
+        struct array_inner;
+        template<typename T>
+        struct array_inner<T[]> {
+            typedef T type;
+        };
+        template<typename T, std::size_t N>
+        struct array_inner<T[N]> {
+            typedef T type;
+        };
+    }
+}
+
+#endif