1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. 2 3 //Distributed under the Boost Software License, Version 1.0. (See accompanying 4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 #ifndef BOOST_QVM_86A42DA4385511E7822024B881262D2E 7 #define BOOST_QVM_86A42DA4385511E7822024B881262D2E 8 9 #include <boost/qvm/inline.hpp> 10 #include <boost/qvm/enable_if.hpp> 11 #include <boost/qvm/quat_traits.hpp> 12 13 namespace 14 boost 15 { 16 namespace 17 qvm 18 { 19 template <class A,class B> 20 BOOST_QVM_INLINE_OPERATIONS 21 typename enable_if_c< 22 is_quat<A>::value && is_quat<B>::value, 23 A &>::type assign(A & a,B const & b)24 assign( A & a, B const & b ) 25 { 26 quat_traits<A>::template write_element<0>(a) = quat_traits<B>::template read_element<0>(b); 27 quat_traits<A>::template write_element<1>(a) = quat_traits<B>::template read_element<1>(b); 28 quat_traits<A>::template write_element<2>(a) = quat_traits<B>::template read_element<2>(b); 29 quat_traits<A>::template write_element<3>(a) = quat_traits<B>::template read_element<3>(b); 30 return a; 31 } 32 } 33 } 34 35 #endif 36