diff --git a/include/boost/numeric/ublas/config.hpp b/include/boost/numeric/ublas/config.hpp index c2eb562c..ab2dff8d 100644 --- a/include/boost/numeric/ublas/config.hpp +++ b/include/boost/numeric/ublas/config.hpp @@ -23,11 +23,9 @@ #include #include #include -#include +#include #include #include -#include -#include #include #include #include diff --git a/include/boost/numeric/ublas/fwd.hpp b/include/boost/numeric/ublas/fwd.hpp index de1943f8..13b5fdaa 100644 --- a/include/boost/numeric/ublas/fwd.hpp +++ b/include/boost/numeric/ublas/fwd.hpp @@ -17,21 +17,24 @@ #ifndef BOOST_UBLAS_FWD_H #define BOOST_UBLAS_FWD_H -namespace boost { + +namespace boost { namespace numeric { namespace ublas { // Borrowed from Dave Abraham's noncopyable. // I believe this should be part of utility.hpp one day... - class nonassignable { - protected: - nonassignable(){} - ~nonassignable(){} - private: // emphasize the following members are private - const nonassignable& operator=( const nonassignable& ); - }; // nonassignable + namespace nonassignable_ // protection from unintended ADL + { + class nonassignable { + protected: + nonassignable(){} + ~nonassignable(){} + private: // emphasize the following members are private + const nonassignable& operator=( const nonassignable& ); + }; // nonassignable + } + + typedef nonassignable_::nonassignable nonassignable; -} - -namespace boost { namespace numeric { namespace ublas { struct concrete_tag {}; struct abstract_tag {}; diff --git a/include/boost/numeric/ublas/iterator.hpp b/include/boost/numeric/ublas/iterator.hpp index e2db7340..cc9d83a1 100644 --- a/include/boost/numeric/ublas/iterator.hpp +++ b/include/boost/numeric/ublas/iterator.hpp @@ -49,7 +49,7 @@ namespace boost { namespace numeric { namespace ublas { */ template class container_const_reference: - private boost::nonassignable { + private nonassignable { public: typedef C container_type; @@ -88,7 +88,7 @@ namespace boost { namespace numeric { namespace ublas { */ template class container_reference: - private boost::nonassignable { + private nonassignable { public: typedef C container_type; diff --git a/include/boost/numeric/ublas/matrix_expression.hpp b/include/boost/numeric/ublas/matrix_expression.hpp index f1c9ab60..0b5aafbb 100644 --- a/include/boost/numeric/ublas/matrix_expression.hpp +++ b/include/boost/numeric/ublas/matrix_expression.hpp @@ -27,7 +27,7 @@ namespace boost { namespace numeric { namespace ublas { // Base class for the Barton Nackman trick template struct matrix_expression: - private boost::nonassignable { + private nonassignable { BOOST_STATIC_CONSTANT (int, complexity = 0); typedef E expression_type; typedef matrix_tag type_category; diff --git a/include/boost/numeric/ublas/noalias.hpp b/include/boost/numeric/ublas/noalias.hpp index 03d0af24..ddb448dd 100644 --- a/include/boost/numeric/ublas/noalias.hpp +++ b/include/boost/numeric/ublas/noalias.hpp @@ -14,16 +14,16 @@ namespace boost { namespace numeric { namespace ublas { // Provides temporary free assigment when LHS has no alias on RHS template class noalias_proxy: - private boost::nonassignable { + private nonassignable { public: typedef typename C::closure_type closure_type; BOOST_UBLAS_INLINE noalias_proxy (C& lval): - boost::nonassignable (), lval_ (lval) {} + nonassignable (), lval_ (lval) {} BOOST_UBLAS_INLINE noalias_proxy (const noalias_proxy& p): - boost::nonassignable (), lval_ (p.lval_) {} + nonassignable (), lval_ (p.lval_) {} template BOOST_UBLAS_INLINE diff --git a/include/boost/numeric/ublas/vector_expression.hpp b/include/boost/numeric/ublas/vector_expression.hpp index 0efe1bac..80aaffd3 100644 --- a/include/boost/numeric/ublas/vector_expression.hpp +++ b/include/boost/numeric/ublas/vector_expression.hpp @@ -29,7 +29,7 @@ namespace boost { namespace numeric { namespace ublas { template struct scalar_expression: - private boost::nonassignable { + private nonassignable { typedef T value_type; }; @@ -92,7 +92,7 @@ namespace boost { namespace numeric { namespace ublas { // Base class for the Barton Nackman trick template struct vector_expression: - private boost::nonassignable { + private nonassignable { BOOST_STATIC_CONSTANT (int, complexity = 0); typedef E expression_type; typedef vector_tag type_category;