Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r59072 - in sandbox/numeric_bindings/boost/numeric/bindings: . blas/detail blas/level2 blas/level3 lapack/auxiliary lapack/computational lapack/driver
From: rutger_at_[hidden]
Date: 2010-01-16 09:47:48


Author: rutger
Date: 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
New Revision: 59072
URL: http://svn.boost.org/trac/boost/changeset/59072

Log:
Added an uplo tag that dynamically changes if a matrix is transposed. >10 routines are affected. Triggered by blas/level2/trsv.hpp.

Added:
   sandbox/numeric_bindings/boost/numeric/bindings/uplo_tag.hpp (contents, props changed)
Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas.h | 4 ++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas_names.h | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp | 6 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp | 2 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp | 8 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp | 14 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp | 14 +++++++-------
   168 files changed, 586 insertions(+), 580 deletions(-)

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas.h 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -85,6 +85,10 @@
 void BLAS_DROT( const fortran_int_t* n, double* x, const fortran_int_t* incx,
         double* y, const fortran_int_t* incy, const double* c,
         const double* s );
+void BLAS_CSROT( const fortran_int_t* n, void* x, const fortran_int_t* incx,
+ void* y, const fortran_int_t* incy, const float* c, const float* s );
+void BLAS_ZDROT( const fortran_int_t* n, void* x, const fortran_int_t* incx,
+ void* y, const fortran_int_t* incy, const double* c, const double* s );
 
 // Value-type variants of rotg
 void BLAS_SROTG( float* a, float* b, float* c, float* s );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas_names.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas_names.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/blas_names.h 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -57,6 +57,8 @@
 // Value-type variants of rot
 #define BLAS_SROT FORTRAN_ID( srot )
 #define BLAS_DROT FORTRAN_ID( drot )
+#define BLAS_CSROT FORTRAN_ID( csrot )
+#define BLAS_ZDROT FORTRAN_ID( zdrot )
 
 // Value-type variants of rotg
 #define BLAS_SROTG FORTRAN_ID( srotg )

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -18,11 +18,11 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -178,7 +178,7 @@
             const VectorX& x, const value_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -177,7 +177,7 @@
             const VectorX& x, const value_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -162,7 +162,7 @@
             MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< MatrixA >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -173,7 +173,7 @@
             const VectorY& y, MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< VectorY >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -173,7 +173,7 @@
             const VectorX& x, const value_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixAP >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -162,7 +162,7 @@
             MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< MatrixAP >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -170,7 +170,7 @@
             const VectorY& y, MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< VectorY >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -18,11 +18,11 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -168,7 +168,7 @@
             const VectorX& x, const real_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -165,7 +165,7 @@
             const VectorX& x, const real_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixAP >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -156,7 +156,7 @@
             MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< MatrixAP >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -162,7 +162,7 @@
             const VectorY& y, MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< VectorY >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -167,7 +167,7 @@
             const VectorX& x, const real_type beta, VectorY& y ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< VectorX >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -158,7 +158,7 @@
             MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< MatrixA >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -165,7 +165,7 @@
             const VectorY& y, MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 VectorX >::type >::type, typename remove_const<
                 typename value< VectorY >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -18,13 +18,13 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -251,8 +251,8 @@
             VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -18,13 +18,13 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -251,8 +251,8 @@
             VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -245,8 +245,8 @@
     static return_type invoke( const MatrixAP& ap, VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
         typedef typename result_of::trans_tag< MatrixAP, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixAP, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixAP >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -245,8 +245,8 @@
     static return_type invoke( const MatrixAP& ap, VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixAP >::type order;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
         typedef typename result_of::trans_tag< MatrixAP, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixAP, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixAP >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -246,8 +246,8 @@
     static return_type invoke( const MatrixA& a, VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -248,8 +248,8 @@
     static return_type invoke( const MatrixA& a, VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename detail::default_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -277,9 +277,9 @@
     static return_type invoke( const value_type alpha, const MatrixA& a,
             const MatrixB& b, const value_type beta, MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixC >::type order;
- typedef typename result_of::trans_tag< MatrixA, order >::type transa;
         typedef typename result_of::trans_tag< MatrixB, order >::type transb;
+ typedef typename result_of::trans_tag< MatrixA, order >::type transa;
+ typedef typename result_of::data_order< MatrixC >::type order;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixB >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -182,7 +182,7 @@
             MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixB >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,12 +17,12 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -175,9 +175,9 @@
     static return_type invoke( const value_type alpha, const MatrixA& a,
             const MatrixB& b, const real_type beta, MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixB >::type order;
- typedef typename result_of::data_side< MatrixC >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::data_order< MatrixB >::type order;
+ typedef typename result_of::uplo_tag< MatrixC >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixB >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,12 +17,12 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -167,9 +167,9 @@
     static return_type invoke( const real_type alpha, const MatrixA& a,
             const real_type beta, MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixC >::type order;
- typedef typename result_of::data_side< MatrixC >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::data_order< MatrixC >::type order;
+ typedef typename result_of::uplo_tag< MatrixC >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixC >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -268,7 +268,7 @@
             MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixA >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixB >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,12 +17,12 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -267,9 +267,9 @@
     static return_type invoke( const value_type alpha, const MatrixA& a,
             const MatrixB& b, const value_type beta, MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixB >::type order;
- typedef typename result_of::data_side< MatrixC >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::data_order< MatrixB >::type order;
+ typedef typename result_of::uplo_tag< MatrixC >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixB >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,12 +17,12 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -260,9 +260,9 @@
     static return_type invoke( const value_type alpha, const MatrixA& a,
             const value_type beta, MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixC >::type order;
- typedef typename result_of::data_side< MatrixC >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::data_order< MatrixC >::type order;
+ typedef typename result_of::uplo_tag< MatrixC >::type uplo;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<
                 typename value< MatrixC >::type >::type >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -269,9 +269,9 @@
     static return_type invoke( const char side, const value_type alpha,
             const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixB >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type transa;
+ typedef typename result_of::data_order< MatrixB >::type order;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -271,9 +271,9 @@
     static return_type invoke( const char side, const value_type alpha,
             const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_order< MatrixB >::type order;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type transa;
+ typedef typename result_of::data_order< MatrixB >::type order;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const< typename value<
                 MatrixA >::type >::type, typename remove_const<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -98,7 +98,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_ASSERT( bindings::bandwidth_lower(ab) >= 0 );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
@@ -124,7 +124,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, ab, workspace( tmp_work ) );
@@ -141,7 +141,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( norm, ab, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -94,7 +94,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
         BOOST_ASSERT( bindings::size_column(a) >= 0 );
@@ -118,7 +118,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, a, workspace( tmp_work ) );
@@ -135,7 +135,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( norm, a, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -93,7 +93,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );
@@ -113,7 +113,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, ap, workspace( tmp_work ) );
@@ -130,7 +130,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( norm, ap, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -128,7 +128,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_ASSERT( bindings::bandwidth_lower(ab) >= 0 );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
@@ -154,7 +154,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, ab, workspace( tmp_work ) );
@@ -171,7 +171,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAB& ab,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( norm, ab, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -119,7 +119,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );
@@ -139,7 +139,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, ap, workspace( tmp_work ) );
@@ -156,7 +156,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( norm, ap, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -120,7 +120,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
         BOOST_ASSERT( bindings::size_column(a) >= 0 );
@@ -144,7 +144,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         return invoke( norm, a, workspace( tmp_work ) );
@@ -161,7 +161,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( norm, a, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -129,7 +129,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_work( $CALL_MIN_SIZE ));
@@ -156,7 +156,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
@@ -174,7 +174,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         return invoke( norm, a, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -106,7 +106,7 @@
             const MatrixBB& bb, MatrixX& x, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -155,7 +155,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab,
             const MatrixBB& bb, MatrixX& x, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -174,7 +174,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab,
             const MatrixBB& bb, MatrixX& x, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( vect, ab, bb, x, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -102,7 +102,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorD >::type >::type,
                 typename remove_const< typename value<
@@ -147,7 +147,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         return invoke( vect, ab, d, e, q, workspace( tmp_work ) );
@@ -165,7 +165,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( vect, ab, d, e, q, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -100,7 +100,7 @@
             const real_type anorm, real_type& rcond, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
                 min_size_work( bindings::size_column(a) ));
@@ -126,7 +126,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( a, ipiv, anorm, rcond, workspace( tmp_work ) );
@@ -143,7 +143,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t itype, MatrixA& a,
             const MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -109,7 +109,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -178,7 +178,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -201,7 +201,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, af, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorD >::type >::type,
                 typename remove_const< typename value<
@@ -143,7 +143,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work() );
         return invoke( a, d, e, tau, workspace( tmp_work ) );
     }
@@ -160,7 +160,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         detail::hetrd( uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorIPIV >::value) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -125,7 +125,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, workspace( tmp_work ) );
     }
@@ -141,7 +141,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -124,7 +124,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( a, ipiv, workspace( tmp_work ) );
@@ -141,7 +141,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -98,7 +98,7 @@
             const real_type anorm, real_type& rcond, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
                 min_size_work( bindings::size_column(ap) ));
@@ -119,7 +119,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( ap, ipiv, anorm, rcond, workspace( tmp_work ) );
@@ -136,7 +136,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -107,7 +107,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -167,7 +167,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -190,7 +190,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, afp, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -94,7 +94,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorD& d, VectorE& e,
             VectorTAU& tau ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorD >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -90,7 +90,7 @@
     template< typename MatrixAP, typename VectorIPIV >
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorIPIV& ipiv ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorIPIV >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -95,7 +95,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -117,7 +117,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( ap, ipiv, workspace( tmp_work ) );
@@ -134,7 +134,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/is_real.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -137,7 +137,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t nb, MatrixA& a,
             VectorE& e, VectorTAU& tau, MatrixW& w ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -189,7 +189,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t nb, MatrixA& a,
             VectorE& e, VectorTAU& tau, MatrixW& w ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -98,7 +98,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -129,7 +129,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( n ) );
         return invoke( n, a, tau, workspace( tmp_work ) );
     }
@@ -145,7 +145,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::orgtr( uplo(), n, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -105,8 +105,8 @@
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -147,8 +147,8 @@
     static std::ptrdiff_t invoke( const char side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( side,
                 bindings::size_row(c), bindings::size_column(c) ) );
         return invoke( side, a, tau, c, workspace( tmp_work ) );
@@ -165,8 +165,8 @@
     static std::ptrdiff_t invoke( const char side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         real_type opt_size_work;
         detail::ormtr( side, uplo(), trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/is_real.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -135,7 +135,7 @@
     static std::ptrdiff_t invoke( const MatrixAB& ab, VectorS& s,
             real_type& scond, real_type& amax ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -174,7 +174,7 @@
     static std::ptrdiff_t invoke( const MatrixAB& ab, VectorS& s,
             real_type& scond, real_type& amax ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorS >::value) );
         BOOST_ASSERT( bindings::bandwidth(ab, uplo()) >= 0 );
         BOOST_ASSERT( bindings::size_column(ab) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -154,7 +154,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -226,7 +226,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -248,7 +248,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( ab, afb, b, x, ferr, berr, minimal_workspace() );
     }
 
@@ -291,7 +291,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -359,7 +359,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -381,7 +381,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( ab, afb, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -119,7 +119,7 @@
     template< typename MatrixAB >
     static std::ptrdiff_t invoke( MatrixAB& ab ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAB >::value) );
         BOOST_ASSERT( bindings::bandwidth(ab, uplo()) >= 0 );
         BOOST_ASSERT( bindings::size_column(ab) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -119,7 +119,7 @@
     template< typename MatrixAB >
     static std::ptrdiff_t invoke( MatrixAB& ab ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAB >::value) );
         BOOST_ASSERT( bindings::bandwidth(ab, uplo()) >= 0 );
         BOOST_ASSERT( bindings::size_column(ab) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -138,7 +138,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(a) ));
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -165,7 +165,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -184,7 +184,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, anorm, rcond, minimal_workspace() );
     }
 
@@ -224,7 +224,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_rwork( bindings::size_column(a) ));
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -251,7 +251,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -270,7 +270,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const real_type anorm,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -151,7 +151,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -222,7 +222,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -244,7 +244,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, af, b, x, ferr, berr, minimal_workspace() );
     }
 
@@ -287,7 +287,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -354,7 +354,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -376,7 +376,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, af, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -179,7 +179,7 @@
     template< typename MatrixA >
     static std::ptrdiff_t invoke( MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_column(a) >= 0 );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -179,7 +179,7 @@
     template< typename MatrixA >
     static std::ptrdiff_t invoke( MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_column(a) >= 0 );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -191,7 +191,7 @@
     template< typename MatrixA, typename MatrixB >
     static std::ptrdiff_t invoke( const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -135,7 +135,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(ap) ));
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -158,7 +158,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -177,7 +177,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, anorm, rcond, minimal_workspace() );
     }
 
@@ -217,7 +217,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_rwork( bindings::size_column(ap) ));
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -240,7 +240,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -259,7 +259,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const real_type anorm,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/is_real.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -131,7 +131,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, VectorS& s,
             real_type& scond, real_type& amax ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -164,7 +164,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, VectorS& s,
             real_type& scond, real_type& amax ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorS >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );
         return detail::ppequ( uplo(), bindings::size_column(ap),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -149,7 +149,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -211,7 +211,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -233,7 +233,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, afp, b, x, ferr, berr, minimal_workspace() );
     }
 
@@ -276,7 +276,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -334,7 +334,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -356,7 +356,7 @@
             const MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, afp, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -114,7 +114,7 @@
     template< typename MatrixAP >
     static std::ptrdiff_t invoke( MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );
         return detail::pptrf( uplo(), bindings::size_column(ap),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -114,7 +114,7 @@
     template< typename MatrixAP >
     static std::ptrdiff_t invoke( MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );
         return detail::pptri( uplo(), bindings::size_column(ap),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -124,7 +124,7 @@
     template< typename MatrixAP, typename MatrixB >
     static std::ptrdiff_t invoke( const MatrixAP& ap, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/is_real.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab,
             const MatrixBB& bb, MatrixX& x, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -147,7 +147,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab,
             const MatrixBB& bb, MatrixX& x, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         return invoke( vect, ab, bb, x, workspace( tmp_work ) );
@@ -164,7 +164,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab,
             const MatrixBB& bb, MatrixX& x, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( vect, ab, bb, x, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -100,7 +100,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -149,7 +149,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         return invoke( vect, ab, d, e, q, workspace( tmp_work ) );
@@ -167,7 +167,7 @@
     static std::ptrdiff_t invoke( const char vect, MatrixAB& ab, VectorD& d,
             VectorE& e, MatrixQ& q, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( vect, ab, d, e, q, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -138,7 +138,7 @@
             const real_type anorm, real_type& rcond, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(ap) ));
@@ -162,7 +162,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -182,7 +182,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, anorm, rcond, minimal_workspace() );
     }
 
@@ -223,7 +223,7 @@
             const real_type anorm, real_type& rcond, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
                 min_size_work( bindings::size_column(ap) ));
@@ -244,7 +244,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( ap, ipiv, anorm, rcond, workspace( tmp_work ) );
@@ -261,7 +261,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -150,7 +150,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -214,7 +214,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -237,7 +237,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, afp, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 
@@ -281,7 +281,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -341,7 +341,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -364,7 +364,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, afp, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -92,7 +92,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorD& d, VectorE& e,
             VectorTAU& tau ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -116,7 +116,7 @@
     template< typename MatrixAP, typename VectorIPIV >
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorIPIV& ipiv ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorIPIV >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -130,7 +130,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -152,7 +152,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( ap, ipiv, workspace( tmp_work ) );
@@ -169,7 +169,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, minimal_workspace() );
     }
 
@@ -201,7 +201,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(ap) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -223,7 +223,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( ap, ipiv, workspace( tmp_work ) );
@@ -240,7 +240,7 @@
     static std::ptrdiff_t invoke( MatrixAP& ap, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( ap, ipiv, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -127,7 +127,7 @@
     static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
             MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -141,7 +141,7 @@
             const real_type anorm, real_type& rcond, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(a) ));
@@ -170,7 +170,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -190,7 +190,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, anorm, rcond, minimal_workspace() );
     }
 
@@ -231,7 +231,7 @@
             const real_type anorm, real_type& rcond, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
                 min_size_work( bindings::size_column(a) ));
@@ -257,7 +257,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( a, ipiv, anorm, rcond, workspace( tmp_work ) );
@@ -274,7 +274,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             const real_type anorm, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, anorm, rcond, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -95,7 +95,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t itype, MatrixA& a,
             const MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -154,7 +154,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -227,7 +227,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -250,7 +250,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, af, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 
@@ -294,7 +294,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -363,7 +363,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -386,7 +386,7 @@
             const VectorIPIV& ipiv, const MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, af, ipiv, b, x, ferr, berr, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -99,7 +99,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -145,7 +145,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work() );
         return invoke( a, d, e, tau, workspace( tmp_work ) );
     }
@@ -162,7 +162,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorD& d, VectorE& e,
             VectorTAU& tau, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::sytrd( uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -137,7 +137,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorIPIV >::value) );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -165,7 +165,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, workspace( tmp_work ) );
     }
@@ -181,7 +181,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::sytrf( uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),
@@ -219,7 +219,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorIPIV >::value) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -247,7 +247,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, workspace( tmp_work ) );
     }
@@ -263,7 +263,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         detail::sytrf( uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -134,7 +134,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -161,7 +161,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( a, ipiv, workspace( tmp_work ) );
@@ -178,7 +178,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, minimal_workspace() );
     }
 
@@ -210,7 +210,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size(ipiv) >= bindings::size_column(a) );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
@@ -237,7 +237,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( a, ipiv, workspace( tmp_work ) );
@@ -254,7 +254,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const VectorIPIV& ipiv,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, ipiv, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -127,7 +127,7 @@
     static std::ptrdiff_t invoke( const MatrixA& a, const VectorIPIV& ipiv,
             MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -27,6 +26,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -143,7 +143,7 @@
             const MatrixAB& ab, real_type& rcond, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(ab) ));
@@ -172,7 +172,7 @@
     static std::ptrdiff_t invoke( const char norm, const fortran_int_t kd,
             const MatrixAB& ab, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
@@ -192,7 +192,7 @@
     static std::ptrdiff_t invoke( const char norm, const fortran_int_t kd,
             const MatrixAB& ab, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         return invoke( norm, kd, ab, rcond, minimal_workspace() );
     }
@@ -234,7 +234,7 @@
             const MatrixAB& ab, real_type& rcond, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_rwork( bindings::size_column(ab) ));
@@ -263,7 +263,7 @@
     static std::ptrdiff_t invoke( const char norm, const fortran_int_t kd,
             const MatrixAB& ab, real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
@@ -283,7 +283,7 @@
     static std::ptrdiff_t invoke( const char norm, const fortran_int_t kd,
             const MatrixAB& ab, real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         return invoke( norm, kd, ab, rcond, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -28,6 +27,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -157,7 +157,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
@@ -219,7 +219,7 @@
             const MatrixAB& ab, const MatrixB& b, const MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
@@ -242,7 +242,7 @@
             const MatrixAB& ab, const MatrixB& b, const MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         return invoke( kd, ab, b, x, ferr, berr, minimal_workspace() );
     }
@@ -287,7 +287,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
@@ -345,7 +345,7 @@
             const MatrixAB& ab, const MatrixB& b, const MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
@@ -368,7 +368,7 @@
             const MatrixAB& ab, const MatrixB& b, const MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         return invoke( kd, ab, b, x, ferr, berr, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -134,8 +134,8 @@
     static std::ptrdiff_t invoke( const fortran_int_t kd,
             const MatrixAB& ab, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
         typedef typename result_of::trans_tag< MatrixAB, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixAB, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixAB >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -137,7 +137,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(ap) ));
@@ -162,7 +162,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
@@ -182,7 +182,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         return invoke( norm, ap, rcond, minimal_workspace() );
     }
@@ -223,7 +223,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_rwork( bindings::size_column(ap) ));
@@ -248,7 +248,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
@@ -268,7 +268,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixAP& ap,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         return invoke( norm, ap, rcond, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -27,6 +26,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -151,7 +151,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
@@ -209,7 +209,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
@@ -232,7 +232,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         return invoke( ap, b, x, ferr, berr, minimal_workspace() );
     }
@@ -276,7 +276,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
@@ -330,7 +330,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
@@ -353,7 +353,7 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         return invoke( ap, b, x, ferr, berr, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,12 +16,12 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -119,7 +119,7 @@
     template< typename MatrixAP >
     static std::ptrdiff_t invoke( MatrixAP& ap ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         BOOST_ASSERT( bindings::size_column(ap) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -130,7 +130,7 @@
     template< typename MatrixAP, typename MatrixB >
     static std::ptrdiff_t invoke( const MatrixAP& ap, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         typedef typename result_of::diag_tag< MatrixAP >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -139,7 +139,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
                 min_size_iwork( bindings::size_column(a) ));
@@ -168,7 +168,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
@@ -188,7 +188,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         return invoke( norm, a, rcond, minimal_workspace() );
     }
@@ -229,7 +229,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
                 min_size_rwork( bindings::size_column(a) ));
@@ -258,7 +258,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
@@ -278,7 +278,7 @@
     static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
             real_type& rcond, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         return invoke( norm, a, rcond, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
@@ -27,6 +26,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -155,8 +155,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
@@ -219,8 +219,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column_op(a, trans()) ) );
@@ -242,8 +242,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         return invoke( a, b, x, ferr, berr, minimal_workspace() );
     }
@@ -287,8 +287,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
@@ -347,8 +347,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column_op(a, trans()) ) );
@@ -370,8 +370,8 @@
             const MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         return invoke( a, b, x, ferr, berr, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,12 +16,12 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -184,7 +184,7 @@
     template< typename MatrixA >
     static std::ptrdiff_t invoke( MatrixA& a ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_column(a) >= 0 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -132,8 +132,8 @@
     template< typename MatrixA, typename MatrixB >
     static std::ptrdiff_t invoke( const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -100,7 +100,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -130,7 +130,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( side,
                 m, n ) );
         return invoke( n, a, tau, workspace( tmp_work ) );
@@ -147,7 +147,7 @@
     static std::ptrdiff_t invoke( const fortran_int_t n, MatrixA& a,
             const VectorTAU& tau, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         detail::ungtr( uplo(), n, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -109,8 +109,8 @@
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -151,8 +151,8 @@
     static std::ptrdiff_t invoke( const char side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( side,
                 bindings::size_row(c), bindings::size_column(c) ) );
         return invoke( side, a, tau, c, workspace( tmp_work ) );
@@ -169,8 +169,8 @@
     static std::ptrdiff_t invoke( const char side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
+ typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
         value_type opt_size_work;
         detail::unmtr( side, uplo(), trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -87,7 +87,7 @@
             fortran_int_t& iter, detail::workspace3< WORK, SWORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -138,7 +138,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const MatrixB& b, MatrixX& x,
             fortran_int_t& iter, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         bindings::detail::array< value_type > tmp_swork( min_size_swork(
@@ -160,7 +160,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const MatrixB& b, MatrixX& x,
             fortran_int_t& iter, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, b, x, iter, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -141,7 +141,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -160,7 +160,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, ab, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -106,7 +106,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -152,7 +152,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -174,7 +174,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -118,7 +118,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -180,7 +180,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -206,7 +206,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, range, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -105,7 +105,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -158,7 +158,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -178,7 +178,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, ab, bb, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -113,7 +113,7 @@
             VectorW& w, MatrixZ& z, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -172,7 +172,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -195,7 +195,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -120,7 +120,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -192,7 +192,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -219,7 +219,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, range, ab, bb, q, vl, vu, il, iu, abstol, m, w,
                 z, ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -100,7 +100,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorW >::value) );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -132,7 +132,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -151,7 +151,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -103,7 +103,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorW >::value) );
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
@@ -140,7 +140,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -162,7 +162,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -118,7 +118,7 @@
             MatrixZ& z, VectorISUPPZ& isuppz, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -171,7 +171,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorISUPPZ& isuppz, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -197,7 +197,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorISUPPZ& isuppz, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -116,7 +116,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -167,7 +167,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -193,7 +193,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -104,7 +104,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -147,7 +147,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -168,7 +168,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -106,7 +106,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -154,7 +154,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -177,7 +177,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -119,7 +119,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -182,7 +182,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -209,7 +209,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -103,7 +103,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -142,7 +142,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, b, workspace( tmp_work ) );
     }
@@ -158,7 +158,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         detail::hesv( uplo(), bindings::size_column(a),
                 bindings::size_column(b), bindings::begin_value(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -114,7 +114,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -187,7 +187,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -211,7 +211,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -98,7 +98,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -132,7 +132,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -151,7 +151,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( jobz, ap, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -103,7 +103,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -143,7 +143,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -165,7 +165,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -113,7 +113,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -158,7 +158,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -184,7 +184,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( jobz, range, ap, vl, vu, il, iu, abstol, m, w, z,
                 ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -143,7 +143,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -165,7 +165,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( itype, jobz, ap, bp, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -106,7 +106,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, detail::workspace3< WORK, RWORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -154,7 +154,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
@@ -178,7 +178,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         value_type opt_size_work;
         real_type opt_size_rwork;
         fortran_int_t opt_size_iwork;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -116,7 +116,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -169,7 +169,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -196,7 +196,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( itype, jobz, range, ap, bp, vl, vu, il, iu, abstol, m,
                 w, z, ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -96,7 +96,7 @@
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -108,7 +108,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -171,7 +171,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -195,7 +195,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,11 +17,11 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -127,7 +127,7 @@
     template< typename MatrixAB, typename MatrixB >
     static std::ptrdiff_t invoke( MatrixAB& ab, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -160,7 +160,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -246,7 +246,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -270,7 +270,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( fact, ab, afb, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }
@@ -315,7 +315,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorS >::type >::type,
                 typename remove_const< typename value<
@@ -397,7 +397,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -421,7 +421,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( fact, ab, afb, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -191,7 +191,7 @@
     template< typename MatrixA, typename MatrixB >
     static std::ptrdiff_t invoke( MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -159,7 +159,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -242,7 +242,7 @@
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -265,7 +265,7 @@
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }
@@ -310,7 +310,7 @@
             VectorFERR& ferr, VectorBERR& berr, detail::workspace2< WORK,
             RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorS >::type >::type,
                 typename remove_const< typename value<
@@ -389,7 +389,7 @@
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -412,7 +412,7 @@
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -124,7 +124,7 @@
     template< typename MatrixAP, typename MatrixB >
     static std::ptrdiff_t invoke( MatrixAP& ap, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -155,7 +155,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -230,7 +230,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -254,7 +254,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }
@@ -299,7 +299,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorS >::type >::type,
                 typename remove_const< typename value<
@@ -370,7 +370,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -394,7 +394,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -99,7 +99,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -140,7 +140,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         return invoke( jobz, ab, w, z, workspace( tmp_work ) );
@@ -157,7 +157,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, ab, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -105,7 +105,7 @@
             MatrixZ& z, const fortran_int_t liwork, detail::workspace2<
             WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -152,7 +152,7 @@
             MatrixZ& z, const fortran_int_t liwork,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -173,7 +173,7 @@
             MatrixZ& z, const fortran_int_t liwork,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::sbevd( jobz, uplo(), bindings::size_column(ab),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -114,7 +114,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -177,7 +177,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -201,7 +201,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, range, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -155,7 +155,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         return invoke( jobz, ab, bb, w, z, workspace( tmp_work ) );
@@ -173,7 +173,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, ab, bb, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -108,7 +108,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -167,7 +167,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -187,7 +187,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAB& ab, MatrixBB& bb,
             VectorW& w, MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::sbgvd( jobz, uplo(), bindings::size_column(ab),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -17,13 +17,13 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -116,7 +116,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAB >::type >::type,
                 typename remove_const< typename value<
@@ -189,7 +189,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -214,7 +214,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAB >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         return invoke( jobz, range, ab, bb, q, vl, vu, il, iu, abstol, m, w,
                 z, ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -97,7 +97,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -132,7 +132,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( jobz, ap, w, z, workspace( tmp_work ) );
@@ -149,7 +149,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( jobz, ap, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -141,7 +141,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -160,7 +160,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixAP& ap, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::spevd( jobz, uplo(), bindings::size_column(ap),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -108,7 +108,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -154,7 +154,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -178,7 +178,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( jobz, range, ap, vl, vu, il, iu, abstol, m, w, z,
                 ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -99,7 +99,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -142,7 +142,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         return invoke( itype, jobz, ap, bp, w, z, workspace( tmp_work ) );
@@ -161,7 +161,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( itype, jobz, ap, bp, w, z, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -102,7 +102,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -150,7 +150,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -172,7 +172,7 @@
             const char jobz, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::spgvd( itype, jobz, uplo(), bindings::size_column(ap),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -112,7 +112,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -166,7 +166,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( n ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( n ) );
@@ -191,7 +191,7 @@
             fortran_int_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol,
                 m, w, z, ifail, minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,13 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -85,7 +85,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const MatrixB& b, MatrixX& x,
             fortran_int_t& iter, detail::workspace2< WORK, SWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -133,7 +133,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const MatrixB& b, MatrixX& x,
             fortran_int_t& iter, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         bindings::detail::array< real_type > tmp_swork( min_size_swork(
@@ -152,7 +152,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, const MatrixB& b, MatrixX& x,
             fortran_int_t& iter, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         return invoke( a, b, x, iter, minimal_workspace() );
     }
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,11 +16,11 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -126,7 +126,7 @@
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
     static std::ptrdiff_t invoke( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -25,6 +24,7 @@
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -151,7 +151,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixAP >::type >::type,
                 typename remove_const< typename value<
@@ -218,7 +218,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -242,7 +242,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }
@@ -287,7 +287,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -350,7 +350,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ap) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -374,7 +374,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixAP >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
         return invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr,
                 minimal_workspace() );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -98,7 +98,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -131,7 +131,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( jobz, a, w, workspace( tmp_work ) );
@@ -148,7 +148,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::syev( jobz, uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -101,7 +101,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -138,7 +138,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -157,7 +157,7 @@
     static std::ptrdiff_t invoke( const char jobz, MatrixA& a, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::syevd( jobz, uplo(), bindings::size_column(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -113,7 +113,7 @@
             MatrixZ& z, VectorISUPPZ& isuppz, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -166,7 +166,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorISUPPZ& isuppz, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -190,7 +190,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorISUPPZ& isuppz, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::syevr( jobz, range, uplo(), bindings::size_column(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -113,7 +113,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -165,7 +165,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -189,7 +189,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( bindings::size_column(a) ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -102,7 +102,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -146,7 +146,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         return invoke( itype, jobz, a, b, w, workspace( tmp_work ) );
@@ -164,7 +164,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::sygv( itype, jobz, uplo(), bindings::size_column(a),
                 bindings::begin_value(a), bindings::stride_major(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -104,7 +104,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -152,7 +152,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -173,7 +173,7 @@
             const char jobz, MatrixA& a, MatrixB& b, VectorW& w,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         fortran_int_t opt_size_iwork;
         detail::sygvd( itype, jobz, uplo(), bindings::size_column(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -24,6 +23,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -117,7 +117,7 @@
             MatrixZ& z, VectorIFAIL& ifail, detail::workspace2< WORK,
             IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -180,7 +180,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work( n ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( n ) );
@@ -204,7 +204,7 @@
             const real_type abstol, fortran_int_t& m, VectorW& w,
             MatrixZ& z, VectorIFAIL& ifail, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( n ) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -144,7 +144,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -183,7 +183,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, b, workspace( tmp_work ) );
     }
@@ -199,7 +199,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         detail::sysv( uplo(), bindings::size_column(a),
                 bindings::size_column(b), bindings::begin_value(a),
@@ -240,7 +240,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -279,7 +279,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work() );
         return invoke( a, ipiv, b, workspace( tmp_work ) );
     }
@@ -295,7 +295,7 @@
     static std::ptrdiff_t invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         detail::sysv( uplo(), bindings::size_column(a),
                 bindings::size_column(b), bindings::begin_value(a),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
 #include <boost/numeric/bindings/is_complex.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
@@ -26,6 +25,7 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -161,7 +161,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< MatrixA >::type >::type,
                 typename remove_const< typename value<
@@ -238,7 +238,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
@@ -262,7 +262,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         real_type opt_size_work;
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( bindings::size_column(a) ) );
@@ -320,7 +320,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
                 typename value< VectorFERR >::type >::type,
                 typename remove_const< typename value<
@@ -393,7 +393,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(a) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -417,7 +417,7 @@
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::data_side< MatrixA >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA >::type uplo;
         value_type opt_size_work;
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(a) ) );

Added: sandbox/numeric_bindings/boost/numeric/bindings/uplo_tag.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/uplo_tag.hpp 2010-01-16 09:47:33 EST (Sat, 16 Jan 2010)
@@ -0,0 +1,77 @@
+//
+// Copyright (c) 2009 Rutger ter Borg
+//
+// 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)
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_UPLO_TAG_HPP
+#define BOOST_NUMERIC_BINDINGS_UPLO_TAG_HPP
+
+#include <boost/numeric/bindings/tag.hpp>
+#include <boost/numeric/bindings/detail/property_map.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace detail {
+
+template< typename DataSide, typename TransTag >
+struct uplo_tag_impl {
+ // If your program complains about this part, this probably
+ // means that you are trying to use row_major matrices where you
+ // should use column_major matrices.
+};
+
+template<>
+struct uplo_tag_impl< tag::upper, tag::no_transpose > {
+ typedef tag::upper type;
+};
+
+template< typename TransTag >
+struct uplo_tag_impl< tag::upper, TransTag > {
+ typedef tag::lower type;
+};
+
+template<>
+struct uplo_tag_impl< tag::lower, tag::no_transpose > {
+ typedef tag::lower type;
+};
+
+template< typename TransTag >
+struct uplo_tag_impl< tag::lower, TransTag > {
+ typedef tag::upper type;
+};
+
+} // namespace detail
+
+namespace result_of {
+
+template< typename T, typename Trans = tag::no_transpose >
+struct uplo_tag {
+ typedef typename detail::uplo_tag_impl<
+ typename detail::property_at< T, tag::data_side >::type,
+ Trans
+ >::type type;
+};
+
+} // namespace result_of
+
+//
+// uplo_tag will output tags that are compatible with BLAS and LAPACK, either one
+// of tag::transpose, tag::no_transpose, or tag::conjugate.
+// It needs an library-orientation (Trans) before it can make a decision about whether
+// a tranpose is in order. Consult the various cases above to see what kind of
+// tag is being generated in what kind of situation.
+//
+template< typename T, typename Trans >
+typename result_of::uplo_tag< T, Trans >::type uplo_tag( const T& t, Trans ) {
+ return result_of::uplo_tag< T, Trans >::type();
+}
+
+} // namespace bindings
+} // namespace numeric
+} // namespace boost
+
+#endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk