//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) #include template struct same_type; template struct same_type { }; template struct check { same_type::type,Result> a; same_type::type,Result> b; }; template struct v; namespace boost { namespace qvm { template struct vec_traits< v > { typedef T scalar_type; static int const dim=D; }; } } int main() { same_type< boost::qvm::deduce_vec< v >::type, v >(); same_type< boost::qvm::deduce_vec< v, 4 >::type, boost::qvm::vec >(); check< v, v, 3, v >(); check< v, v, 4, boost::qvm::vec >(); }