]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/qvm/detail/mat_assign.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / qvm / detail / mat_assign.hpp
index 5857ea0b747b5a401d1f42005d955118accfd61d..2643f80d7ea63e29da14c2ee33bdc1e3d3997c6e 100644 (file)
@@ -1,75 +1,71 @@
-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+#ifndef BOOST_QVM_DETAIL_MAT_ASSIGN_HPP_INCLUDED
+#define BOOST_QVM_DETAIL_MAT_ASSIGN_HPP_INCLUDED
 
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
 
-#ifndef BOOST_QVM_47136D2C385411E7BA27D3B681262D2E
-#define BOOST_QVM_47136D2C385411E7BA27D3B681262D2E
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/qvm/gen/mat_assign2.hpp>
 #include <boost/qvm/gen/mat_assign3.hpp>
 #include <boost/qvm/gen/mat_assign4.hpp>
 
+namespace boost { namespace qvm {
+
 namespace
-boost
+qvm_detail
     {
-    namespace
-    qvm
+    template <int M,int N>
+    struct
+    assign_mm_defined
         {
-        namespace
-        qvm_detail
-            {
-            template <int M,int N>
-            struct
-            assign_mm_defined
-                {
-                static bool const value=false;
-                };
-
-            template <int I,int N>
-            struct
-            copy_matrix_elements
-                {
-                template <class A,class B>
-                static
-                BOOST_QVM_INLINE_CRITICAL
-                void
-                f( A & a, B const & b )
-                    {
-                    mat_traits<A>::template write_element<I/mat_traits<A>::cols,I%mat_traits<A>::cols>(a) =
-                        mat_traits<B>::template read_element<I/mat_traits<B>::cols,I%mat_traits<B>::cols>(b);
-                    copy_matrix_elements<I+1,N>::f(a,b);
-                    }
-                };
+        static bool const value=false;
+        };
 
-            template <int N>
-            struct
-            copy_matrix_elements<N,N>
-                {
-                template <class A,class B>
-                static
-                BOOST_QVM_INLINE_CRITICAL
-                void
-                f( A &, B const & )
-                    {
-                    }
-                };
+    template <int I,int N>
+    struct
+    copy_matrix_elements
+        {
+        template <class A,class B>
+        static
+        BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_CRITICAL
+        void
+        f( A & a, B const & b )
+            {
+            mat_traits<A>::template write_element<I/mat_traits<A>::cols,I%mat_traits<A>::cols>(a) =
+                mat_traits<B>::template read_element<I/mat_traits<B>::cols,I%mat_traits<B>::cols>(b);
+            copy_matrix_elements<I+1,N>::f(a,b);
             }
+        };
 
+    template <int N>
+    struct
+    copy_matrix_elements<N,N>
+        {
         template <class A,class B>
-        BOOST_QVM_INLINE_TRIVIAL
-        typename boost::enable_if_c<
-            is_mat<A>::value && is_mat<B>::value &&
-            mat_traits<A>::rows==mat_traits<B>::rows &&
-            mat_traits<A>::cols==mat_traits<B>::cols &&
-            !qvm_detail::assign_mm_defined<mat_traits<A>::rows,mat_traits<A>::cols>::value,
-            A &>::type
-        assign( A & a, B const & b )
+        static
+        BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_CRITICAL
+        void
+        f( A &, B const & )
             {
-            qvm_detail::copy_matrix_elements<0,mat_traits<A>::rows*mat_traits<A>::cols>::f(a,b);
-            return a;
             }
-        }
+        };
     }
 
+template <class A,class B>
+BOOST_QVM_CONSTEXPR BOOST_QVM_INLINE_TRIVIAL
+typename enable_if_c<
+    is_mat<A>::value && is_mat<B>::value &&
+    mat_traits<A>::rows==mat_traits<B>::rows &&
+    mat_traits<A>::cols==mat_traits<B>::cols &&
+    !qvm_detail::assign_mm_defined<mat_traits<A>::rows,mat_traits<A>::cols>::value,
+    A &>::type
+assign( A & a, B const & b )
+    {
+    qvm_detail::copy_matrix_elements<0,mat_traits<A>::rows*mat_traits<A>::cols>::f(a,b);
+    return a;
+    }
+
+} }
+
 #endif