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 #include <boost/qvm/vec_traits.hpp> 7 #include <boost/qvm/swizzle2.hpp> 8 #include <boost/detail/lightweight_test.hpp> 9 10 template <int D> struct my_vec { }; 11 int called=0; 12 13 namespace 14 boost 15 { 16 namespace 17 qvm 18 { 19 void YY(...)20 YY(...) 21 { 22 BOOST_TEST(0); 23 } 24 void XZ(...)25 XZ(...) 26 { 27 ++called; 28 } 29 template <int D> 30 struct 31 vec_traits< my_vec<D> > 32 { 33 typedef int scalar_type; 34 static int const dim=D; 35 template <int I> static int read_element( my_vec<D> const & ); 36 template <int I> static int & write_element( my_vec<D> & ); 37 }; 38 } 39 } 40 41 int main()42main() 43 { 44 using namespace boost::qvm; 45 YY(my_vec<2>()); 46 XZ(my_vec<2>()); 47 BOOST_TEST(called==1); 48 return boost::report_errors(); 49 } 50