diff --git a/include/boost/numeric/ublas/concepts.hpp b/include/boost/numeric/ublas/concepts.hpp deleted file mode 100644 index 14ba2e59..00000000 --- a/include/boost/numeric/ublas/concepts.hpp +++ /dev/null @@ -1,1655 +0,0 @@ -// -// Copyright (c) 2000-2002 -// Joerg Walter, Mathias Koch -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. The authors make no representations -// about the suitability of this software for any purpose. -// It is provided "as is" without express or implied warranty. -// -// The authors gratefully acknowledge the support of -// GeNeSys mbH & Co. KG in producing this work. -// - -#ifndef BOOST_UBLAS_CONCEPTS_H -#define BOOST_UBLAS_CONCEPTS_H - -#include - -// #define INTERNAL_STORAGE -// #define INTERNAL_STORAGE_SPARSE -// #define INTERNAL_VECTOR -// #define INTERNAL_VECTOR_PROXY -// #define INTERNAL_VECTOR_SPARSE -// #define INTERNAL_MATRIX -// #define INTERNAL_MATRIX_PROXY -// #define INTERNAL_BANDED -// #define INTERNAL_TRIANGULAR -// #define INTERNAL_SYMMETRIC -// #define INTERNAL_HERMITIAN -// #define INTERNAL_MATRIX_SPARSE -// #define INTERNAL_VECTOR_EXPRESSION -// #define INTERNAL_MATRIX_EXPRESSION - -// #define EXTERNAL - -// Concept checks based on ideas of Jeremy Siek - -namespace boost { namespace numeric { namespace ublas { - - - template - struct AssignableConcept { - typedef T value_type; - - static void constraints (value_type t) { - // Copy Constructor - value_type c1 (t); - value_type c2 = t; - // Assignment - value_type a = t; - std::swap (c1, c2); - ignore_unused_variable_warning (a); - } - }; - - template - struct EqualityComparableConcept { - typedef T value_type; - - static void constraints (const value_type t) { - bool b; - // Equality - b = t == t; - // Inequality - b = t != t; - ignore_unused_variable_warning (b); - } - }; - - template - struct LessThanComparableConcept { - typedef T value_type; - - static void constraints (const value_type t) { - bool b; - b = t < t; - b = t <= t; - b = t >= t; - b = t > t; - ignore_unused_variable_warning (b); - } - }; - - template - struct DefaultConstructibleConcept { - typedef T value_type; - - static void constraints () { - // Default Constructor - static value_type c1 = value_type (); - static value_type c2; - ignore_unused_variable_warning (c1); - ignore_unused_variable_warning (c2); - } - }; - - template::value_type> - struct BidirectionalIteratorConcept { - typedef I iterator_type; - - typedef typename std::iterator_traits::iterator_category iterator_category; - typedef typename std::iterator_traits::difference_type difference_type; - typedef typename std::iterator_traits::value_type value_type; - typedef typename std::iterator_traits::reference reference; - typedef typename std::iterator_traits::pointer pointer; - - static void constraints () { - AssignableConcept::constraints (iterator_type ()); - EqualityComparableConcept::constraints (iterator_type ()); - DefaultConstructibleConcept::constraints (); - iterator_type it = iterator_type (); - - // Associated types - assume constructable - iterator_category c; - difference_type d (0); - pointer p (0); - // Dereference - reference r (*it); - value_type t (r); - // Member access - // FIXME it->m; - // Preincrement - ++ it; - // Postincrement - it ++; - // Predecrement - -- it; - // Postdecrement - it --; - ignore_unused_variable_warning (t); - ignore_unused_variable_warning (c); - ignore_unused_variable_warning (d); - ignore_unused_variable_warning (p); - ignore_unused_variable_warning (r); - } - }; - - template::value_type> - struct MutableBidirectionalIteratorConcept { - typedef I iterator_type; - typedef T value_type; - - static void constraints () { - BidirectionalIteratorConcept::constraints (); - iterator_type it = iterator_type (); - value_type t = value_type (); - // Dereference assignment - *it = t; - ignore_unused_variable_warning (t); - } - }; - - template::difference_type, class T = typename std::iterator_traits::value_type> - struct RandomAccessIteratorConcept { - typedef I iterator_type; - typedef D difference_type; - typedef T value_type; - - static void constraints () { - LessThanComparableConcept::constraints (iterator_type ()); - BidirectionalIteratorConcept::constraints (); - iterator_type it = iterator_type (), it1 = iterator_type (), it2 = iterator_type (); - difference_type n (0); - value_type t; - // Forward motion - it += n; - // Iterator addition - it = it + n; - iterator_type itp (it + n); - // Backward motion - it -= n; - // Iterator subtraction - it = it - n; - iterator_type itm (it - n); - // Difference - n = it1 - it2; - // Element operator -#ifdef BOOST_UBLAS_ITERATOR_IS_INDEXABLE - t = it [n]; -#endif - t = *(it + n); - ignore_unused_variable_warning (itp); - ignore_unused_variable_warning (itm); - ignore_unused_variable_warning (t); - } - }; - - template::difference_type, class T = typename std::iterator_traits::value_type> - struct MutableRandomAccessIteratorConcept { - typedef I iterator_type; - typedef D difference_type; - typedef T value_type; - - static void constraints () { - MutableBidirectionalIteratorConcept::constraints (); - RandomAccessIteratorConcept::constraints (); - iterator_type it = iterator_type (); - difference_type n (0); - value_type t = value_type (); - // Element assignment -#ifdef BOOST_UBLAS_ITERATOR_IS_INDEXABLE - it [n] = t; -#endif - *(it + n) = t; - } - }; - - template - struct Indexed1DIteratorConcept { - typedef I iterator_type; - - static void constraints () { - iterator_type it = iterator_type (); - // Index - it.index (); - } - }; - - template - struct IndexedBidirectional1DIteratorConcept { - typedef I iterator_type; - - static void constraints () { - BidirectionalIteratorConcept::constraints (); - Indexed1DIteratorConcept::constraints (); - } - }; - - template - struct MutableIndexedBidirectional1DIteratorConcept { - typedef I iterator_type; - - static void constraints () { - MutableBidirectionalIteratorConcept::constraints (); - Indexed1DIteratorConcept::constraints (); - } - }; - - template - struct IndexedRandomAccess1DIteratorConcept { - typedef I iterator_type; - - static void constraints () { - RandomAccessIteratorConcept::constraints (); - Indexed1DIteratorConcept::constraints (); - } - }; - - template - struct MutableIndexedRandomAccess1DIteratorConcept { - typedef I iterator_type; - - static void constraints () { - MutableRandomAccessIteratorConcept::constraints (); - Indexed1DIteratorConcept::constraints (); - } - }; - - template - struct Indexed2DIteratorConcept { - typedef I iterator_type; - typedef typename I::dual_iterator_type dual_iterator_type; - typedef typename I::dual_reverse_iterator_type dual_reverse_iterator_type; - - static void constraints () { - iterator_type it = iterator_type (); - // Indices - it.index1 (); - it.index2 (); - // Iterator begin/end - dual_iterator_type it_begin (it.begin ()); - dual_iterator_type it_end (it.end ()); - // Reverse iterator begin/end - dual_reverse_iterator_type it_rbegin (it.rbegin ()); - dual_reverse_iterator_type it_rend (it.rend ()); - ignore_unused_variable_warning (it_begin); - ignore_unused_variable_warning (it_end); - ignore_unused_variable_warning (it_rbegin); - ignore_unused_variable_warning (it_rend); - } - }; - - template - struct IndexedBidirectional2DIteratorConcept { - typedef I1 iterator1_type; - typedef I2 iterator2_type; - - static void constraints () { - BidirectionalIteratorConcept::constraints (); - BidirectionalIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - } - }; - - template - struct MutableIndexedBidirectional2DIteratorConcept { - typedef I1 iterator1_type; - typedef I2 iterator2_type; - - static void constraints () { - MutableBidirectionalIteratorConcept::constraints (); - MutableBidirectionalIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - } - }; - - template - struct IndexedRandomAccess2DIteratorConcept { - typedef I1 iterator1_type; - typedef I2 iterator2_type; - - static void constraints () { - RandomAccessIteratorConcept::constraints (); - RandomAccessIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - } - }; - - template - struct MutableIndexedRandomAccess2DIteratorConcept { - typedef I1 iterator1_type; - typedef I2 iterator2_type; - - static void constraints () { - MutableRandomAccessIteratorConcept::constraints (); - MutableRandomAccessIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - Indexed2DIteratorConcept::constraints (); - } - }; - - template - struct ContainerConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::const_iterator const_iterator_type; - - static void constraints () { - DefaultConstructibleConcept::constraints (); - container_type c = container_type (); - size_type n (0); - // Beginning of range - const_iterator_type cit_begin (c.begin ()); - // End of range - const_iterator_type cit_end (c.end ()); - // Size - n = c.size (); - ignore_unused_variable_warning (cit_end); - ignore_unused_variable_warning (cit_begin); - ignore_unused_variable_warning (n); - } - }; - - template - struct MutableContainerConcept { - typedef C container_type; - typedef typename C::iterator iterator_type; - - static void constraints () { - AssignableConcept::constraints (container_type ()); - ContainerConcept::constraints (); - container_type c = container_type (), c1 = container_type (), c2 = container_type (); - // Beginning of range - iterator_type it_begin (c.begin ()); - // End of range - iterator_type it_end (c.end ()); - // Swap - c1.swap (c2); - ignore_unused_variable_warning (it_end); - ignore_unused_variable_warning (it_begin); - } - }; - - template - struct ReversibleContainerConcept { - typedef C container_type; - typedef typename C::const_reverse_iterator const_reverse_iterator_type; - - static void constraints () { - ContainerConcept::constraints (); - const container_type cc = container_type (); - // Beginning of reverse range - const_reverse_iterator_type crit_begin (cc.rbegin ()); - // End of reverse range - const_reverse_iterator_type crit_end (cc.rend ()); - ignore_unused_variable_warning (crit_end); - ignore_unused_variable_warning (crit_begin); - } - }; - - template - struct MutableReversibleContainerConcept { - typedef C container_type; - typedef typename C::reverse_iterator reverse_iterator_type; - - static void constraints () { - MutableContainerConcept::constraints (); - ReversibleContainerConcept::constraints (); - container_type c = container_type (); - // Beginning of reverse range - reverse_iterator_type rit_begin (c.rbegin ()); - // End of reverse range - reverse_iterator_type rit_end (c.rend ()); - ignore_unused_variable_warning (rit_end); - ignore_unused_variable_warning (rit_begin); - } - }; - - template - struct RandomAccessContainerConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::value_type value_type; - - static void constraints () { - ReversibleContainerConcept::constraints (); - container_type c = container_type (); - size_type n (0); - value_type t = value_type (); - // Element access - t = c [n]; - ignore_unused_variable_warning (t); - } - }; - - template - struct MutableRandomAccessContainerConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::value_type value_type; - - static void constraints () { - MutableReversibleContainerConcept::constraints (); - RandomAccessContainerConcept::constraints (); - container_type c = container_type (); - size_type n (0); - value_type t = value_type (); - // Element access - c [n] = t; - } - }; - - template - struct StorageArrayConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::value_type value_type; - - static void constraints () { - RandomAccessContainerConcept::constraints (); - size_type n (0); - // Sizing constructor - container_type c = container_type (n); - // Initialised sizing constructor - container_type (n, value_type (5)); - ignore_unused_variable_warning (c); - } - }; - - template - struct MutableStorageArrayConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::value_type value_type; - typedef typename C::iterator iterator_type; - - static void constraints () { - MutableRandomAccessContainerConcept::constraints (); - size_type n (0); - // Sizing constructor - container_type c = container_type (n); - // Initialised sizing constructor - c = container_type (n, value_type (3)); - // Resize - c.resize (n, value_type (5)); - // Resize - none preserving - c.resize (n); - } - }; - - template - struct StorageSparseConcept { - typedef C container_type; - typedef typename C::size_type size_type; - - static void constraints () { - ReversibleContainerConcept::constraints (); - } - }; - - template - struct MutableStorageSparseConcept { - typedef C container_type; - typedef typename C::size_type size_type; - typedef typename C::value_type value_type; - typedef typename C::iterator iterator_type; - - static void constraints () { - MutableReversibleContainerConcept::constraints (); - container_type c = container_type (); - value_type t = value_type (); - iterator_type it = iterator_type (), it1 = iterator_type (), it2 = iterator_type (); - // Insert - c.insert (it, t); - // Erase - c.erase (it); - // Range erase - c.erase (it1, it2); - // Clear - c.clear (); - } - }; - - template - struct IndexSetConcept { - typedef G generator_type; - typedef typename G::size_type size_type; - typedef typename G::value_type value_type; - - static void constraints () { - DefaultConstructibleConcept::constraints (); - ReversibleContainerConcept::constraints (); - generator_type g = generator_type (); - size_type n (0); - value_type t; - // Element access - t = g (n); - ignore_unused_variable_warning (t); - } - }; - - template - struct ScalarExpressionConcept { - typedef S scalar_type; - typedef typename S::value_type value_type; - - static void constraints () { - DefaultConstructibleConcept::constraints (); - scalar_type s = scalar_type (); - value_type t; - // Conversion - t = s; - ignore_unused_variable_warning (t); - } - }; - - template - struct VectorExpressionConcept { - typedef V vector_type; - typedef typename V::type_category type_category; - typedef typename V::size_type size_type; - typedef typename V::value_type value_type; - typedef typename V::const_iterator const_iterator_type; - typedef typename V::const_reverse_iterator const_reverse_iterator_type; - - static void constraints () { - DefaultConstructibleConcept::constraints (); - vector_type v = vector_type (); - size_type n (0), i (0); - value_type t; - // Find (internal?) - const_iterator_type cit (v.find (i)); - // Beginning of range - const_iterator_type cit_begin (v.begin ()); - // End of range - const_iterator_type cit_end (v.end ()); - // Size - n = v.size (); - // Beginning of reverse range - const vector_type cv = vector_type (); - const_reverse_iterator_type crit_begin (cv.rbegin ()); - // End of reverse range - const_reverse_iterator_type crit_end (cv.rend ()); - // Element access - t = v (i); - ignore_unused_variable_warning (n); - ignore_unused_variable_warning (cit); - ignore_unused_variable_warning (cit_begin); - ignore_unused_variable_warning (cit_end); - ignore_unused_variable_warning (crit_begin); - ignore_unused_variable_warning (crit_end); - ignore_unused_variable_warning (t); - } - }; - - template - struct MutableVectorExpressionConcept { - typedef V vector_type; - typedef typename V::size_type size_type; - typedef typename V::value_type value_type; - typedef typename V::iterator iterator_type; - typedef typename V::reverse_iterator reverse_iterator_type; - - static void constraints () { - AssignableConcept::constraints (vector_type ()); - VectorExpressionConcept::constraints (); - vector_type v = vector_type (), v1 = vector_type (), v2 = vector_type (); - size_type i (0); - value_type t = value_type (); - // Find (internal?) - iterator_type it (v.find (i)); - // Beginning of range - iterator_type it_begin (v.begin ()); - // End of range - iterator_type it_end (v.end ()); - // Swap - v1.swap (v2); - // Beginning of reverse range - reverse_iterator_type rit_begin (v.rbegin ()); - // End of reverse range - reverse_iterator_type rit_end (v.rend ()); - // Assignments - v2 = v1; - v2.assign (v1); - v2 += v1; - v2.plus_assign (v1); - v2 -= v1; - v2.minus_assign (v1); - v *= t; - ignore_unused_variable_warning (it); - ignore_unused_variable_warning (it_begin); - ignore_unused_variable_warning (it_end); - ignore_unused_variable_warning (rit_begin); - ignore_unused_variable_warning (rit_end); - } - }; - - template - struct MatrixExpressionConcept { - typedef M matrix_type; - typedef typename M::type_category type_category; - typedef typename M::size_type size_type; - typedef typename M::value_type value_type; - typedef typename M::const_iterator1 const_iterator1_type; - typedef typename M::const_iterator2 const_iterator2_type; - typedef typename M::const_reverse_iterator1 const_reverse_iterator1_type; - typedef typename M::const_reverse_iterator2 const_reverse_iterator2_type; - - static void constraints () { - DefaultConstructibleConcept::constraints (); - matrix_type m = matrix_type (); - size_type n (0), i (0), j (0); - value_type t; - // Find (internal?) - const_iterator1_type cit1 (m.find1 (0, i, j)); - const_iterator2_type cit2 (m.find2 (0, i, j)); - // Beginning of range - const_iterator1_type cit1_begin (m.begin1 ()); - const_iterator2_type cit2_begin (m.begin2 ()); - // End of range - const_iterator1_type cit1_end (m.end1 ()); - const_iterator2_type cit2_end (m.end2 ()); - // Size - n = m.size1 (); - n = m.size2 (); - // Beginning of reverse range - const matrix_type cm = matrix_type (); - const_reverse_iterator1_type crit1_begin (cm.rbegin1 ()); - const_reverse_iterator2_type crit2_begin (cm.rbegin2 ()); - // End of reverse range - const_reverse_iterator1_type crit1_end (cm.rend1 ()); - const_reverse_iterator2_type crit2_end (cm.rend2 ()); - // Element access - t = m (i, j); - ignore_unused_variable_warning (n); - ignore_unused_variable_warning (cit1); - ignore_unused_variable_warning (cit2); - ignore_unused_variable_warning (cit1_begin); - ignore_unused_variable_warning (cit2_begin); - ignore_unused_variable_warning (cit1_end); - ignore_unused_variable_warning (cit2_end); - ignore_unused_variable_warning (crit1_begin); - ignore_unused_variable_warning (crit2_begin); - ignore_unused_variable_warning (crit1_end); - ignore_unused_variable_warning (crit2_end); - ignore_unused_variable_warning (t); - } - }; - - template - struct MutableMatrixExpressionConcept { - typedef M matrix_type; - typedef typename M::size_type size_type; - typedef typename M::value_type value_type; - typedef typename M::iterator1 iterator1_type; - typedef typename M::iterator2 iterator2_type; - typedef typename M::reverse_iterator1 reverse_iterator1_type; - typedef typename M::reverse_iterator2 reverse_iterator2_type; - - static void constraints () { - AssignableConcept::constraints (matrix_type ()); - MatrixExpressionConcept::constraints (); - matrix_type m = matrix_type (), m1 = matrix_type (), m2 = matrix_type (); - size_type i (0), j (0); - value_type t = value_type (); - // Find (internal?) - iterator1_type it1 (m.find1 (0, i, j)); - iterator2_type it2 (m.find2 (0, i, j)); - // Beginning of range - iterator1_type it1_begin (m.begin1 ()); - iterator2_type it2_begin (m.begin2 ()); - // End of range - iterator1_type it1_end (m.end1 ()); - iterator2_type it2_end (m.end2 ()); - // Swap - m1.swap (m2); - // Beginning of reverse range - reverse_iterator1_type rit1_begin (m.rbegin1 ()); - reverse_iterator2_type rit2_begin (m.rbegin2 ()); - // End of reverse range - reverse_iterator1_type rit1_end (m.rend1 ()); - reverse_iterator2_type rit2_end (m.rend2 ()); - // Assignments - m2 = m1; - m2.assign (m1); - m2 += m1; - m2.plus_assign (m1); - m2 -= m1; - m2.minus_assign (m1); - m *= t; - ignore_unused_variable_warning (it1); - ignore_unused_variable_warning (it2); - ignore_unused_variable_warning (it1_begin); - ignore_unused_variable_warning (it2_begin); - ignore_unused_variable_warning (it1_end); - ignore_unused_variable_warning (it2_end); - ignore_unused_variable_warning (rit1_begin); - ignore_unused_variable_warning (rit2_begin); - ignore_unused_variable_warning (rit1_end); - ignore_unused_variable_warning (rit2_end); - } - }; - - template - struct VectorConcept { - typedef V vector_type; - typedef typename V::size_type size_type; - - static void constraints () { - VectorExpressionConcept::constraints (); - size_type n (0); - // Sizing constructor - vector_type v (n); - } - }; - - template - struct MutableVectorConcept { - typedef V vector_type; - typedef typename V::size_type size_type; - typedef typename V::value_type value_type; - - static void constraints () { - VectorConcept::constraints (); - MutableVectorExpressionConcept::constraints (); - size_type n (0); - value_type t = value_type (); - size_type i (0); - // Sizing constructor - vector_type v (n); - // Insert - v.insert (i, t); - // Erase - v.erase (i); - // Clear - v.clear (); - // Resize - v.resize (n); - } - }; - - template - struct MatrixConcept { - typedef M matrix_type; - typedef typename M::size_type size_type; - - static void constraints () { - MatrixExpressionConcept::constraints (); - size_type n (0); - // Sizing constructor - matrix_type m (n, n); - } - }; - - template - struct MutableMatrixConcept { - typedef M matrix_type; - typedef typename M::size_type size_type; - typedef typename M::value_type value_type; - - static void constraints () { - MatrixConcept::constraints (); - MutableMatrixExpressionConcept::constraints (); - size_type n (0); - value_type t = value_type (); - size_type i (0), j (0); - // Sizing constructor - matrix_type m (n, n); - // Insert - m.insert (i, j, t); - // Erase - m.erase (i, j); - // Clear - m.clear (); - // Resize - m.resize (n, n); - m.resize (n, n, false); - } - }; - - template - T - ZeroElement (T); - template<> - float - ZeroElement (float) { - return 0.f; - } - template<> - double - ZeroElement (double) { - return 0.; - } - template<> - vector - ZeroElement (vector) { - return zero_vector (); - } - template<> - vector - ZeroElement (vector) { - return zero_vector (); - } - template<> - matrix - ZeroElement (matrix) { - return zero_matrix (); - } - template<> - matrix - ZeroElement (matrix) { - return zero_matrix (); - } -#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300) - template<> - std::complex - ZeroElement (std::complex) { - return std::complex (0.f); - } - template<> - std::complex - ZeroElement (std::complex) { - return std::complex (0.); - } - template<> - vector > - ZeroElement (vector >) { - return zero_vector > (); - } - template<> - vector > - ZeroElement (vector >) { - return zero_vector > (); - } - template<> - matrix > - ZeroElement (matrix >) { - return zero_matrix > (); - } - template<> - matrix > - ZeroElement (matrix >) { - return zero_matrix > (); - } -#endif - - template - T - OneElement (T); - template<> - float - OneElement (float) { - return 1.f; - } - template<> - double - OneElement (double) { - return 1.; - } - template<> - matrix - OneElement (matrix) { - return identity_matrix (); - } - template<> - matrix - OneElement (matrix) { - return identity_matrix (); - } -#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300) - template<> - std::complex - OneElement (std::complex) { - return std::complex (1.f); - } - template<> - std::complex - OneElement (std::complex) { - return std::complex (1.); - } - template<> - matrix > - OneElement (matrix >) { - return identity_matrix > (); - } - template<> - matrix > - OneElement (matrix >) { - return identity_matrix > (); - } -#endif - - template - bool - operator == (const vector_expression &e1, const vector_expression &e2) { - typedef BOOST_UBLAS_TYPENAME promote_traits::promote_type value_type; - typedef BOOST_UBLAS_TYPENAME type_traits::real_type real_type; - return norm_inf (e1 - e2) == real_type (0); - } - template - bool - operator == (const matrix_expression &e1, const matrix_expression &e2) { - typedef BOOST_UBLAS_TYPENAME promote_traits::promote_type value_type; - typedef BOOST_UBLAS_TYPENAME type_traits::real_type real_type; - return norm_inf (e1 - e2) == real_type (0); - } - - template - struct AdditiveAbelianGroupConcept { - typedef T value_type; - - static void constraints () { - bool r; - value_type a = value_type (), b = value_type (), c = value_type (); - r = (a + b) + c == a + (b + c); - r = ZeroElement (value_type ()) + a == a; - r = a + ZeroElement (value_type ()) == a; - r = a + (- a) == ZeroElement (value_type ()); - r = (- a) + a == ZeroElement (value_type ()); - r = a + b == b + a; - ignore_unused_variable_warning (r); - } - }; - - template - struct MultiplicativeAbelianGroupConcept { - typedef T value_type; - - static void constraints () { - bool r; - value_type a = value_type (), b = value_type (), c = value_type (); - r = (a * b) * c == a * (b * c); - r = OneElement (value_type ()) * a == a; - r = a * OneElement (value_type ()) == a; - r = a * (OneElement (value_type ()) / a) == a; - r = (OneElement (value_type ()) / a) * a == a; - r = a * b == b * a; - ignore_unused_variable_warning (r); - } - }; - - template - struct RingWithIdentityConcept { - typedef T value_type; - - static void constraints () { - AdditiveAbelianGroupConcept::constraints (); - bool r; - value_type a = value_type (), b = value_type (), c = value_type (); - r = (a * b) * c == a * (b * c); - r = (a + b) * c == a * c + b * c; - r = OneElement (value_type ()) * a == a; - r = a * OneElement (value_type ()) == a; - ignore_unused_variable_warning (r); - } - static void constraints (int) { - AdditiveAbelianGroupConcept::constraints (); - bool r; - value_type a = value_type (), b = value_type (), c = value_type (); - r = prod (T (prod (a, b)), c) == prod (a, T (prod (b, c))); - r = prod (a + b, c) == prod (a, c) + prod (b, c); - r = prod (OneElement (value_type ()), a) == a; - r = prod (a, OneElement (value_type ())) == a; - ignore_unused_variable_warning (r); - } - }; - - template - struct CommutativeRingWithIdentityConcept { - typedef T value_type; - - static void constraints () { - RingWithIdentityConcept::constraints (); - bool r; - value_type a = value_type (), b = value_type (); - r = a * b == b * a; - ignore_unused_variable_warning (r); - } - }; - - template - struct FieldConcept { - typedef T value_type; - - static void constraints () { - CommutativeRingWithIdentityConcept::constraints (); - bool r; - value_type a = value_type (); - r = a == ZeroElement (value_type ()) || a * (OneElement (value_type ()) / a) == a; - r = a == ZeroElement (value_type ()) || (OneElement (value_type ()) / a) * a == a; - ignore_unused_variable_warning (r); - } - }; - - template - struct VectorSpaceConcept { - typedef T value_type; - typedef V vector_type; - - static void constraints () { - FieldConcept::constraints (); - AdditiveAbelianGroupConcept::constraints (); - bool r; - value_type alpha = value_type (), beta = value_type (); - vector_type a = vector_type (), b = vector_type (); - r = alpha * (a + b) == alpha * a + alpha * b; - r = (alpha + beta) * a == alpha * a + beta * a; - r = (alpha * beta) * a == alpha * (beta * a); - r = OneElement (value_type ()) * a == a; - ignore_unused_variable_warning (r); - } - }; - - template - struct LinearOperatorConcept { - typedef T value_type; - typedef V vector_type; - typedef M matrix_type; - - static void constraints () { - VectorSpaceConcept::constraints (); - bool r; - value_type alpha = value_type (), beta = value_type (); - vector_type a = vector_type (), b = vector_type (); - matrix_type A = matrix_type (); - r = prod (A, alpha * a + beta * b) == alpha * prod (A, a) + beta * prod (A, b); - ignore_unused_variable_warning (r); - } - }; - - void concept_checks () { - - // Storage Array -#if defined (INTERNAL) || defined (INTERNAL_STORAGE) - StorageArrayConcept >::constraints (); - MutableStorageArrayConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - StorageArrayConcept >::constraints (); - MutableStorageArrayConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - StorageArrayConcept >::constraints (); - MutableStorageArrayConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - StorageArrayConcept >::constraints (); - MutableStorageArrayConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - IndexSetConcept::constraints (); - RandomAccessIteratorConcept::constraints (); - - IndexSetConcept::constraints (); - RandomAccessIteratorConcept::constraints (); - - IndexSetConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); -#endif - - // Storage Sparse -#if defined (INTERNAL) || defined (INTERNAL_STORAGE_SPARSE) - StorageSparseConcept >::constraints (); - MutableStorageSparseConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - StorageSparseConcept >::constraints (); - MutableStorageSparseConcept >::constraints (); - BidirectionalIteratorConcept::const_iterator>::constraints (); - // Not value_type mutable - BidirectionalIteratorConcept::iterator>::constraints (); - -#ifdef BOOST_UBLAS_DEPRACATED - StorageSparseConcept >::constraints (); - MutableStorageSparseConcept >::constraints (); - RandomAccessIteratorConcept::const_iterator>::constraints (); - MutableRandomAccessIteratorConcept::iterator>::constraints (); - - StorageSparseConcept >::constraints (); - MutableStorageSparseConcept >::constraints (); - BidirectionalIteratorConcept::const_iterator>::constraints (); - MutableBidirectionalIteratorConcept::iterator>::constraints (); -#endif - -#endif - - // Vector -#if defined (INTERNAL) || defined (INTERNAL_VECTOR) - VectorConcept >::constraints (); - MutableVectorConcept >::constraints (); - IndexedRandomAccess1DIteratorConcept::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept::reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - IndexedRandomAccess1DIteratorConcept::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept::const_reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - IndexedBidirectional1DIteratorConcept::const_iterator>::constraints (); - IndexedBidirectional1DIteratorConcept::const_reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - IndexedRandomAccess1DIteratorConcept::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept::const_reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - MutableVectorConcept >::constraints (); - IndexedRandomAccess1DIteratorConcept::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept::reverse_iterator>::constraints (); -#endif - - // Vector Proxies -#if defined (INTERNAL) || defined (INTERNAL_VECTOR_PROXY) - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); -#endif - - // Sparse Vector -#if defined (INTERNAL) || defined (INTERNAL_VECTOR_SPARSE) - VectorConcept >::constraints (); - MutableVectorConcept >::constraints (); - IndexedBidirectional1DIteratorConcept::const_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::iterator>::constraints (); - IndexedBidirectional1DIteratorConcept::const_reverse_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - MutableVectorConcept >::constraints (); - IndexedBidirectional1DIteratorConcept::const_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::iterator>::constraints (); - IndexedBidirectional1DIteratorConcept::const_reverse_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::reverse_iterator>::constraints (); - - VectorConcept >::constraints (); - MutableVectorConcept >::constraints (); - IndexedBidirectional1DIteratorConcept::const_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::iterator>::constraints (); - IndexedBidirectional1DIteratorConcept::const_reverse_iterator>::constraints (); - MutableIndexedBidirectional1DIteratorConcept::reverse_iterator>::constraints (); -#endif - - // Matrix -#if defined (INTERNAL) || defined (INTERNAL_MATRIX) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - matrix::reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - vector_of_vector::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - vector_of_vector::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - vector_of_vector::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - vector_of_vector::reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - identity_matrix::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - identity_matrix::const_reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - IndexedBidirectional2DIteratorConcept::const_iterator1, - zero_matrix::const_iterator2>::constraints (); - IndexedBidirectional2DIteratorConcept::const_reverse_iterator1, - zero_matrix::const_reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - scalar_matrix::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - scalar_matrix::const_reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - c_matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - c_matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - c_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - c_matrix::reverse_iterator2>::constraints (); -#endif - - // Matrix Proxies -#if defined (INTERNAL) || defined (INTERNAL_MATRIX_PROXY) - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept, vector > >::constraints (); - MutableVectorExpressionConcept, vector > >::constraints (); - IndexedRandomAccess1DIteratorConcept, vector >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept, vector >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, vector >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept, vector >::reverse_iterator>::constraints (); - - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - matrix_range >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - matrix_range >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - matrix_range >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - matrix_range >::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - matrix_slice >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - matrix_slice >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - matrix_slice >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - matrix_slice >::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - matrix_indirect >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - matrix_indirect >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - matrix_indirect >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - matrix_indirect >::reverse_iterator2>::constraints (); -#endif - - // Banded Matrix -#if defined (INTERNAL) || defined (INTERNAL_BANDED) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - banded_matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - banded_matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - banded_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - banded_matrix::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - banded_adaptor >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - banded_adaptor >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - banded_adaptor >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - banded_adaptor >::reverse_iterator2>::constraints (); -#endif - - // Triangular Matrix -#if defined (INTERNAL) || defined (INTERNAL_TRIANGULAR) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - triangular_matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - triangular_matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - triangular_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - triangular_matrix::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - triangular_adaptor >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - triangular_adaptor >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - triangular_adaptor >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - triangular_adaptor >::reverse_iterator2>::constraints (); -#endif - - // Symmetric Matrix -#if defined (INTERNAL) || defined (INTERNAL_SYMMETRIC) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - symmetric_matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - symmetric_matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - symmetric_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - symmetric_matrix::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); -#ifndef SKIP_BAD - // const_iterator (iterator) constructor is bad - MutableMatrixExpressionConcept > >::constraints (); -#endif - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - symmetric_adaptor >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - symmetric_adaptor >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - symmetric_adaptor >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - symmetric_adaptor >::reverse_iterator2>::constraints (); -#endif - - // Hermitian Matrix -#if defined (INTERNAL) || defined (INTERNAL_HERMITIAN) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedRandomAccess2DIteratorConcept::const_iterator1, - hermitian_matrix::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::iterator1, - hermitian_matrix::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept::const_reverse_iterator1, - hermitian_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept::reverse_iterator1, - hermitian_matrix::reverse_iterator2>::constraints (); - - MatrixExpressionConcept > >::constraints (); -#ifndef SKIP_BAD - // const_iterator (iterator) constructor is bad - MutableMatrixExpressionConcept > >::constraints (); -#endif - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - hermitian_adaptor >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - hermitian_adaptor >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - hermitian_adaptor >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - hermitian_adaptor >::reverse_iterator2>::constraints (); -#endif - - // Sparse Matrix -#if defined (INTERNAL) || defined (INTERNAL_MATRIX_SPARSE) - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedBidirectional2DIteratorConcept::const_iterator1, - sparse_matrix::const_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::iterator1, - sparse_matrix::iterator2>::constraints (); - IndexedBidirectional2DIteratorConcept::const_reverse_iterator1, - sparse_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::reverse_iterator1, - sparse_matrix::reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedBidirectional2DIteratorConcept::const_iterator1, - sparse_vector_of_sparse_vector::const_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::iterator1, - sparse_vector_of_sparse_vector::iterator2>::constraints (); - IndexedBidirectional2DIteratorConcept::const_reverse_iterator1, - sparse_vector_of_sparse_vector::const_reverse_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::reverse_iterator1, - sparse_vector_of_sparse_vector::reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedBidirectional2DIteratorConcept::const_iterator1, - compressed_matrix::const_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::iterator1, - compressed_matrix::iterator2>::constraints (); - IndexedBidirectional2DIteratorConcept::const_reverse_iterator1, - compressed_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::reverse_iterator1, - compressed_matrix::reverse_iterator2>::constraints (); - - MatrixConcept >::constraints (); - MutableMatrixConcept >::constraints (); - IndexedBidirectional2DIteratorConcept::const_iterator1, - coordinate_matrix::const_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::iterator1, - coordinate_matrix::iterator2>::constraints (); - IndexedBidirectional2DIteratorConcept::const_reverse_iterator1, - coordinate_matrix::const_reverse_iterator2>::constraints (); - MutableIndexedBidirectional2DIteratorConcept::reverse_iterator1, - coordinate_matrix::reverse_iterator2>::constraints (); -#endif - - // Scalar Expressions -#if defined (INTERNAL) || defined (INTERNAL_VECTOR_EXPRESSION) - ScalarExpressionConcept >::constraints (); - ScalarExpressionConcept >::constraints (); - - // Vector Expressions -#ifndef BOOST_UBLAS_CT_REFERENCE_BASE_TYPEDEFS - VectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); -#endif - - VectorExpressionConcept > >::constraints (); - MutableVectorExpressionConcept > >::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept >::const_reverse_iterator>::constraints (); - MutableIndexedRandomAccess1DIteratorConcept >::reverse_iterator>::constraints (); - - VectorExpressionConcept, scalar_identity > >::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_identity >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_identity >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, vector, scalar_plus > >::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, scalar_plus >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, scalar_plus >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, scalar_multiplies, scalar_reference > >::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_multiplies, scalar_reference >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_multiplies, scalar_reference >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, scalar_value, scalar_multiplies, scalar_reference > >::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, vector, scalar_multiplies, scalar_reference > > >::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, scalar_multiplies, scalar_reference > >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, scalar_multiplies, scalar_reference > >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, scalar_value, scalar_multiplies, scalar_reference > > >::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference > >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference > >::const_reverse_iterator>::constraints (); - - ScalarExpressionConcept, vector_sum > >::constraints (); - ScalarExpressionConcept, vector_norm_1 > >::constraints (); - ScalarExpressionConcept, vector_norm_2 > >::constraints (); - ScalarExpressionConcept, vector_norm_inf > >::constraints (); - - ScalarExpressionConcept, vector, vector_inner_prod > >::constraints (); -#endif - - // Matrix Expressions -#if defined (INTERNAL) || defined (INTERNAL_MATRIX_EXPRESSION) - MatrixExpressionConcept > >::constraints (); - MutableMatrixExpressionConcept > >::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_iterator1, - matrix_reference >::const_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::iterator1, - matrix_reference >::iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept >::const_reverse_iterator1, - matrix_reference >::const_reverse_iterator2>::constraints (); - MutableIndexedRandomAccess2DIteratorConcept >::reverse_iterator1, - matrix_reference >::reverse_iterator2>::constraints (); - - MatrixExpressionConcept, vector, scalar_multiplies > >::constraints (); - IndexedRandomAccess2DIteratorConcept, vector, scalar_multiplies >::const_iterator1, - vector_matrix_binary, vector, scalar_multiplies >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, vector, scalar_multiplies >::const_reverse_iterator1, - vector_matrix_binary, vector, scalar_multiplies >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, scalar_identity > >::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_identity >::const_iterator1, - matrix_unary1, scalar_identity >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_identity >::const_reverse_iterator1, - matrix_unary1, scalar_identity >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, scalar_identity > >::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_identity >::const_iterator1, - matrix_unary2, scalar_identity >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_identity >::const_reverse_iterator1, - matrix_unary2, scalar_identity >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, matrix, scalar_plus > >::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, scalar_plus >::const_iterator1, - matrix_binary, matrix, scalar_plus >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, scalar_plus >::const_reverse_iterator1, - matrix_binary, matrix, scalar_plus >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, scalar_multiplies, scalar_reference > >::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_multiplies, scalar_reference >::const_iterator1, - matrix_binary_scalar1, scalar_multiplies, scalar_reference >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_multiplies, scalar_reference >::const_reverse_iterator1, - matrix_binary_scalar1, scalar_multiplies, scalar_reference >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, double, scalar_multiplies, scalar_reference > >::constraints (); - IndexedRandomAccess2DIteratorConcept, double, scalar_multiplies, scalar_reference >::const_iterator1, - matrix_binary_scalar2, double, scalar_multiplies, scalar_reference >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, double, scalar_multiplies, scalar_reference >::const_reverse_iterator1, - matrix_binary_scalar2, double, scalar_multiplies, scalar_reference >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, matrix, scalar_multiplies, scalar_reference > > >::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, scalar_multiplies, scalar_reference > >::const_iterator1, - matrix_binary_scalar1, matrix, scalar_multiplies, scalar_reference > >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, scalar_multiplies, scalar_reference > >::const_reverse_iterator1, - matrix_binary_scalar1, matrix, scalar_multiplies, scalar_reference > >::const_reverse_iterator2>::constraints (); - - MatrixExpressionConcept, scalar_value, scalar_multiplies, scalar_reference > > >::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference > >::const_iterator1, - matrix_binary_scalar2, scalar_value, scalar_multiplies, scalar_reference > >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, scalar_value, scalar_multiplies, scalar_reference > >::const_reverse_iterator1, - matrix_binary_scalar2, scalar_value, scalar_multiplies, scalar_reference > >::const_reverse_iterator2>::constraints (); - - VectorExpressionConcept, vector, matrix_vector_prod1 > >::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, matrix_vector_prod1 >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, vector, matrix_vector_prod1 >::const_reverse_iterator>::constraints (); - - VectorExpressionConcept, matrix, matrix_vector_prod2 > >::constraints (); - IndexedRandomAccess1DIteratorConcept, matrix, matrix_vector_prod2 >::const_iterator>::constraints (); - IndexedRandomAccess1DIteratorConcept, matrix, matrix_vector_prod2 >::const_reverse_iterator>::constraints (); - - MatrixExpressionConcept, matrix, matrix_matrix_prod > >::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, matrix_matrix_prod >::const_iterator1, - matrix_matrix_binary, matrix, matrix_matrix_prod >::const_iterator2>::constraints (); - IndexedRandomAccess2DIteratorConcept, matrix, matrix_matrix_prod >::const_reverse_iterator1, - matrix_matrix_binary, matrix, matrix_matrix_prod >::const_reverse_iterator2>::constraints (); - - ScalarExpressionConcept, matrix_norm_1 > >::constraints (); - ScalarExpressionConcept, matrix_norm_frobenius > >::constraints (); - ScalarExpressionConcept, matrix_norm_inf > >::constraints (); -#endif - -#ifdef EXTERNAL - AdditiveAbelianGroupConcept::constraints (); - CommutativeRingWithIdentityConcept::constraints (); - FieldConcept::constraints (); - VectorSpaceConcept >::constraints (); - RingWithIdentityConcept >::constraints (0); - VectorSpaceConcept >::constraints (); - LinearOperatorConcept, matrix >::constraints (); - - AdditiveAbelianGroupConcept::constraints (); - CommutativeRingWithIdentityConcept::constraints (); - FieldConcept::constraints (); - VectorSpaceConcept >::constraints (); - RingWithIdentityConcept >::constraints (0); - VectorSpaceConcept >::constraints (); - LinearOperatorConcept, matrix >::constraints (); - -#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300) - AdditiveAbelianGroupConcept >::constraints (); - CommutativeRingWithIdentityConcept >::constraints (); - FieldConcept >::constraints (); - VectorSpaceConcept, vector > >::constraints (); - RingWithIdentityConcept > >::constraints (0); - VectorSpaceConcept, matrix > >::constraints (); - LinearOperatorConcept, vector >, matrix > >::constraints (); - - AdditiveAbelianGroupConcept >::constraints (); - CommutativeRingWithIdentityConcept >::constraints (); - FieldConcept >::constraints (); - VectorSpaceConcept, vector > >::constraints (); - RingWithIdentityConcept > >::constraints (0); - VectorSpaceConcept, matrix > >::constraints (); - LinearOperatorConcept, vector >, matrix > >::constraints (); -#endif -#endif - } - -}}} - -#endif