//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_02C176D6B3AB11DE979F9A0D56D89593 #define UUID_02C176D6B3AB11DE979F9A0D56D89593 #include #include #include #include "test_qvm.hpp" namespace test_qvm { template struct vector { T a[Dim]; mutable T b[Dim]; explicit vector( T start=T(0), T step=T(0) ) { for( int i=0; i!=Dim; ++i,start+=step ) a[i]=b[i]=start; } }; template void dump_ab( vector const & a, vector const & b ) { detail::dump_ab(a.a,b.a); } } namespace boost { namespace qvm { template struct vec_traits< test_qvm::vector >: vec_traits_defaults,T,Dim> { typedef vec_traits_defaults,T,Dim>base; template static typename base::scalar_type & write_element( typename base::vec_type & m ) { BOOST_QVM_STATIC_ASSERT(I>=0); BOOST_QVM_STATIC_ASSERT(I struct deduce_vec2,test_qvm::vector,Dim> { typedef test_qvm::vector type; }; } } namespace { struct V1; struct V2; struct V3; } #endif