From c7155a06e7c9b4f47c8c8879ccce8edcb7d89d4e Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pauli.t.virtanen@jyu.fi>
Date: Wed, 3 Aug 2022 14:05:47 +0300
Subject: [PATCH] array: cleanup namespace

---
 src/array.hpp | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/array.hpp b/src/array.hpp
index 65f9302..b8faf19 100644
--- a/src/array.hpp
+++ b/src/array.hpp
@@ -9,7 +9,6 @@
 
 constexpr size_t Dynamic = SIZE_MAX;
 
-
 /*! Array dimensions and strides: known at compile-time & dynamic
  */
 template <size_t...>
@@ -55,21 +54,24 @@ struct Shape<Dim0,Dims...>
     static constexpr std::array<size_t, ndim> dims() { return {Dim0, Dims...}; }
 };
 
-template <size_t I, typename Shape>
-struct TailNth;
-
-template <typename Shape>
-struct TailNth<0, Shape>
+namespace detail
 {
-    using type = Shape;
-};
-
-template <size_t I, typename Shape>
-struct TailNth
-{
-    using type = typename TailNth<I-1, typename Shape::Tail>::type;
-};
-
+    /*! Extract Nth tail shape */
+    template <size_t I, typename Shape>
+    struct TailNth;
+
+    template <typename Shape>
+    struct TailNth<0, Shape>
+    {
+        using type = Shape;
+    };
+
+    template <size_t I, typename Shape>
+    struct TailNth
+    {
+        using type = typename TailNth<I-1, typename Shape::Tail>::type;
+    };
+}
 
 /*! Simple data-by-reference strided array class a la Fortran
  */
@@ -193,7 +195,7 @@ public:
         }
 
     template <typename... Idx>
-    Array<Scalar, typename TailNth<sizeof...(Idx), Shape>::type > part(Idx... idxs) const
+    Array<Scalar, typename detail::TailNth<sizeof...(Idx), Shape>::type > part(Idx... idxs) const
         {
             constexpr size_t nidxs = sizeof...(idxs);
             static_assert(nidxs < Shape::ndim,
-- 
GitLab