+++ /dev/null
-/* -*- C++ -*- ------------------------------------------------------------
-
-Copyright (c) 2007 Jesse Anders and Demian Nave http://cmldev.net/
-
-The Configurable Math Library (CML) is distributed under the terms of the
-Boost Software License, v1.0 (see cml/LICENSE for details).
-
- *-----------------------------------------------------------------------*/
-/** @file
- * @brief
- *
- * Defines promotions for the vectors resulting from matrix/vector or
- * vector/matrix ops.
- *
- * @sa matvec_ops::mvmul
- */
-
-#ifndef matvec_promotions_h
-#define matvec_promotions_h
-
-#include <cml/et/scalar_promotions.h>
-#include <cml/vector/vector_promotions.h>
-
-namespace cml {
-namespace et {
-
-/* Default mat/vec type promotion template. */
-template<typename LeftT, typename RightT> struct MatVecPromote;
-
-/** Type promotion for a matrix and a vector. */
-template<
- typename E1, class AT1, typename BO, typename L,
- typename E2, class AT2>
-struct MatVecPromote< cml::matrix<E1,AT1,BO,L>, cml::vector<E2,AT2> >
-{
- typedef cml::matrix<E1,AT1,BO,L> matrix_type;
- typedef cml::vector<E2,AT2> vector_type;
-
- /* Promote the arrays: */
- typedef typename ArrayPromote<
- typename matrix_type::array_type,
- typename vector_type::array_type
- >::type promoted_array;
-
- /* The deduced vector result type: */
- typedef cml::vector<
- typename promoted_array::value_type,
- typename promoted_array::generator_type
- > type;
-
- /* The deduced temporary type: */
- typedef typename type::temporary_type temporary_type;
- /* Note: this is to avoid an "incomplete type" error from ICC9, which
- * can't handle e.g. <X>::<Y>::<Z> when <X> is a template type.
- */
-};
-
-/** Type promotion for a vector and a matrix. */
-template<
- typename E1, class AT1,
- typename E2, class AT2, typename BO, typename L>
-struct MatVecPromote< cml::vector<E1,AT1>, cml::matrix<E2,AT2,BO,L> >
-{
- typedef cml::vector<E1,AT1> vector_type;
- typedef cml::matrix<E2,AT2,BO,L> matrix_type;
-
- /* Promote the arrays: */
- typedef typename ArrayPromote<
- typename vector_type::array_type,
- typename matrix_type::array_type
- >::type promoted_array;
-
- /* The deduced vector result type: */
- typedef cml::vector<
- typename promoted_array::value_type,
- typename promoted_array::generator_type
- > type;
-
- /* The deduced temporary type: */
- typedef typename type::temporary_type temporary_type;
- /* Note: this is to avoid an "incomplete type" error from ICC9, which
- * can't handle e.g. <X>::<Y>::<Z> when <X> is a template type.
- */
-};
-
-} // namespace et
-} // namespace cml
-
-#endif
-
-// -------------------------------------------------------------------------
-// vim:ft=cpp