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/swizzle4.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
YYYY(...)20         YYYY(...)
21             {
22             BOOST_TEST(0);
23             }
24         void
XXXZ(...)25         XXXZ(...)
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()42 main()
43     {
44     using namespace boost::qvm;
45     YYYY(my_vec<2>());
46     XXXZ(my_vec<2>());
47     BOOST_TEST(called==1);
48     return boost::report_errors();
49     }
50