//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) #ifdef BOOST_QVM_TEST_SINGLE_HEADER # include BOOST_QVM_TEST_SINGLE_HEADER #else # include #endif template struct same_type; template struct same_type { }; template struct check { same_type::type,Result> a; same_type::type,Result> b; }; template struct q1; template struct q2; namespace boost { namespace qvm { template struct quat_traits< q1 > { typedef T scalar_type; }; template struct quat_traits< q2 > { typedef T scalar_type; }; template struct deduce_quat,S> { typedef q2 type; }; template struct deduce_quat2,q2,S> { typedef q2 type; }; } } int main() { same_type< boost::qvm::deduce_quat< q1 >::type, q1 >(); check< q1, q1, q1 >(); same_type< boost::qvm::deduce_quat< q2 >::type, q2 >(); same_type< boost::qvm::deduce_quat< q2 >::type, q2 >(); check< q2, q2, q2 >(); check< q2, q2, q2 >(); }