//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 m; namespace boost { namespace qvm { template struct mat_traits< m > { typedef T scalar_type; static int const rows=R; static int const cols=C; }; } } int main() { same_type< boost::qvm::deduce_mat< m >::type, m >(); same_type< boost::qvm::deduce_mat< m, 4, 4 >::type, boost::qvm::mat >(); check< m, m, 4, 2, m >(); check< m, m, 4, 4, boost::qvm::mat >(); }