//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. //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) #ifndef UUID_7E7AB138196311E0907B246CDFD72085 #define UUID_7E7AB138196311E0907B246CDFD72085 #include #include #include namespace boost { namespace qvm { template struct vec; namespace qvm_detail { template ::dim> struct deduce_vec_default { typedef vec::scalar_type,D> type; }; template struct deduce_vec_default { typedef V type; }; } template ::dim> struct deduce_vec { BOOST_QVM_STATIC_ASSERT(is_vec::value); typedef typename qvm_detail::deduce_vec_default::type type; }; namespace qvm_detail { template ::value, bool VB=is_vec::value, int AD=vec_traits::dim, int BD=vec_traits::dim> struct deduce_v2_default { typedef vec< typename deduce_scalar< typename scalar::type, typename scalar::type>::type, D> type; }; template struct deduce_v2_default { typedef V type; }; } template struct deduce_vec2 { BOOST_QVM_STATIC_ASSERT(is_vec::value || is_vec::value); typedef typename qvm_detail::deduce_v2_default::type type; }; } } #endif