00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef MTL_DIV_RESULT_INCLUDE
00010 #define MTL_DIV_RESULT_INCLUDE
00011
00012 #include <boost/numeric/mtl/utility/ashape.hpp>
00013 #include <boost/numeric/mtl/matrix/map_view.hpp>
00014 #include <boost/numeric/mtl/vector/map_view.hpp>
00015
00016 namespace mtl { namespace traits {
00017
00018 template < typename Op1, typename Op2, typename DivOp > struct div_result_aux {};
00019
00021
00022 template < typename Op1, typename Op2 >
00023 struct div_result : public div_result_aux < Op1, Op2, typename ashape::div_op<typename ashape::ashape<Op1>::type,
00024 typename ashape::ashape<Op2>::type >::type > {};
00025
00027 template < typename Op1, typename Op2 >
00028 struct div_result_aux < Op1, Op2, ::mtl::ashape::cvec_scal_div >
00029 {
00030 typedef typename vector::divide_by_view<Op1,Op2> type;
00031 };
00032
00034 template < typename Op1, typename Op2 >
00035 struct div_result_aux < Op1, Op2, ::mtl::ashape::rvec_scal_div >
00036 {
00037 typedef typename vector::divide_by_view<Op1,Op2> type;
00038 };
00039
00041 template < typename Op1, typename Op2 >
00042 struct div_result_aux < Op1, Op2, ::mtl::ashape::mat_scal_div >
00043 {
00044 typedef typename matrix::divide_by_view<Op1,Op2> type;
00045 };
00046
00047 }}
00048
00049
00050 #endif