DriveHQ Start Menu
Cloud Drive Mapping
Folder Sync
Cloud Backup
True Drop Box
FTP/SFTP Hosting
Group Account
DriveHQ Start Menu
Online File Server
My Storage
|
Manage Shares
|
Publishes
|
Drop Boxes
|
Group Account
WebDAV Drive Mapping
Cloud Drive Home
|
WebDAV Guide
|
Drive Mapping Tool
|
Drive Mapping URL
Complete Data Backup
Backup Guide
|
Online Backup Tool
|
Cloud-to-Cloud Backup
FTP, Email & Web Service
FTP Home
|
FTP Hosting FAQ
|
Email Hosting
|
EmailManager
|
Web Hosting
Help & Resources
About
|
Enterprise Service
|
Partnership
|
Comparisons
|
Support
Quick Links
Security and Privacy
Download Software
Service Manual
Use Cases
Group Account
Online Help
Blog
Contact
Cloud Surveillance
Sign Up
Login
Features
Business Features
Online File Server
FTP Hosting
Cloud Drive Mapping
Cloud File Backup
Email Backup & Hosting
Cloud File Sharing
Folder Synchronization
Group Management
True Drop Box
Full-text Search
AD Integration/SSO
Mobile Access
IP Camera & DVR Solution
More...
Personal Features
Personal Cloud Drive
Backup All Devices
Mobile APPs
Personal Web Hosting
Sub-Account (for Kids)
Home/PC/Kids Monitoring
More...
Software
DriveHQ Drive Mapping Tool
DriveHQ FileManager
DriveHQ Online Backup
DriveHQ Mobile Apps
Pricing
Business Plans & Pricing
Personal Plans & Pricing
Price Comparison with Others
Feature Comparison with Others
Install Mobile App
Sign up
Creating account...
Invalid character in username! Only 0-9, a-z, A-Z, _, -, . allowed.
Username is required!
Invalid email address!
E-mail is required!
Password is required!
Password is invalid!
Password and confirmation do not match.
Confirm password is required!
I accept
Membership Agreement
Please read the Membership Agreement and check "I accept"!
Free Quick Sign-up
Sign-up Page
Log in
Signing in...
Username or e-mail address is required!
Password is required!
Keep me logged in
Quick Login
Forgot Password
Up
Upload
Download
Share
Publish
New Folder
New File
Copy
Cut
Delete
Paste
Rate
Upgrade
Rotate
Effect
Edit
Slide
History
// // Copyright (c) 2000-2002 // Joerg Walter, Mathias Koch // // 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) // // The authors gratefully acknowledge the support of // GeNeSys mbH & Co. KG in producing this work. // #ifndef _BOOST_UBLAS_CONCEPTS_ #define _BOOST_UBLAS_CONCEPTS_ #include
// Concept checks based on ideas of Jeremy Siek namespace boost { namespace numeric { namespace ublas { template
struct Indexed1DIteratorConcept { typedef I iterator_type; void constraints () { iterator_type it = iterator_type (); // Index it.index (); } }; template
struct IndexedBidirectional1DIteratorConcept { typedef I iterator_type; void constraints () { function_requires< BidirectionalIteratorConcept
>(); function_requires< Indexed1DIteratorConcept
>(); } }; template
struct Mutable_IndexedBidirectional1DIteratorConcept { typedef I iterator_type; void constraints () { function_requires< Mutable_BidirectionalIteratorConcept
>(); function_requires< Indexed1DIteratorConcept
>(); } }; template
struct IndexedRandomAccess1DIteratorConcept { typedef I iterator_type; void constraints () { function_requires< RandomAccessIteratorConcept
>(); function_requires< Indexed1DIteratorConcept
>(); } }; template
struct Mutable_IndexedRandomAccess1DIteratorConcept { typedef I iterator_type; void constraints () { function_requires< Mutable_RandomAccessIteratorConcept
>(); function_requires< Indexed1DIteratorConcept
>(); } }; 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; 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 subiterator1_type; typedef I2 subiterator2_type; void constraints () { function_requires< BidirectionalIteratorConcept
>(); function_requires< BidirectionalIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); } }; template
struct Mutable_IndexedBidirectional2DIteratorConcept { typedef I1 subiterator1_type; typedef I2 subiterator2_type; void constraints () { function_requires< Mutable_BidirectionalIteratorConcept
>(); function_requires< Mutable_BidirectionalIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); } }; template
struct IndexedRandomAccess2DIteratorConcept { typedef I1 subiterator1_type; typedef I2 subiterator2_type; void constraints () { function_requires< RandomAccessIteratorConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); } }; template
struct Mutable_IndexedRandomAccess2DIteratorConcept { typedef I1 subiterator1_type; typedef I2 subiterator2_type; void constraints () { function_requires< Mutable_RandomAccessIteratorConcept
>(); function_requires< Mutable_RandomAccessIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); function_requires< Indexed2DIteratorConcept
>(); } }; template
struct StorageArrayConcept { typedef C container_type; typedef typename C::size_type size_type; typedef typename C::value_type value_type; void constraints () { function_requires< RandomAccessContainerConcept
>(); 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 Mutable_StorageArrayConcept { typedef C container_type; typedef typename C::size_type size_type; typedef typename C::value_type value_type; typedef typename C::iterator iterator_type; void constraints () { function_requires< Mutable_RandomAccessContainerConcept
> (); 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; void constraints () { function_requires< ReversibleContainerConcept
> (); } }; template
struct Mutable_StorageSparseConcept { typedef C container_type; typedef typename C::size_type size_type; typedef typename C::value_type value_type; typedef typename C::iterator iterator_type; void constraints () { // NOTE - Not Mutable_ReversibleContainerConcept function_requires< ReversibleContainerConcept
>(); 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; void constraints () { function_requires< AssignableConcept
>(); function_requires< ReversibleContainerConcept
>(); 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 SE scalar_expression_type; typedef typename SE::value_type value_type; void constraints () { scalar_expression_type *sp; scalar_expression_type s = *sp; value_type t; // Conversion t = s; ignore_unused_variable_warning (t); } }; template
struct VectorExpressionConcept { typedef VE vector_expression_type; typedef typename VE::type_category type_category; typedef typename VE::size_type size_type; typedef typename VE::value_type value_type; typedef typename VE::const_iterator const_iterator_type; typedef typename VE::const_reverse_iterator const_reverse_iterator_type; void constraints () { vector_expression_type *vp; const vector_expression_type *cvp; vector_expression_type v = *vp; const vector_expression_type cv = *cvp; 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_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 Mutable_VectorExpressionConcept { typedef VE vector_expression_type; typedef typename VE::size_type size_type; typedef typename VE::value_type value_type; typedef typename VE::iterator iterator_type; typedef typename VE::reverse_iterator reverse_iterator_type; void constraints () { function_requires< AssignableConcept
>(); function_requires< VectorExpressionConcept
>(); vector_expression_type *vp; vector_expression_type v = *vp, v1 = *vp, v2 = *vp; 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 ME matrix_expression_type; typedef typename ME::type_category type_category; typedef typename ME::size_type size_type; typedef typename ME::value_type value_type; typedef typename ME::const_iterator1 const_subiterator1_type; typedef typename ME::const_iterator2 const_subiterator2_type; typedef typename ME::const_reverse_iterator1 const_reverse_subiterator1_type; typedef typename ME::const_reverse_iterator2 const_reverse_subiterator2_type; void constraints () { matrix_expression_type *mp; const matrix_expression_type *cmp; matrix_expression_type m = *mp; const matrix_expression_type cm = *cmp; size_type n (0), i (0), j (0); value_type t; // Find (internal?) const_subiterator1_type cit1 (m.find1 (0, i, j)); const_subiterator2_type cit2 (m.find2 (0, i, j)); // Beginning of range const_subiterator1_type cit1_begin (m.begin1 ()); const_subiterator2_type cit2_begin (m.begin2 ()); // End of range const_subiterator1_type cit1_end (m.end1 ()); const_subiterator2_type cit2_end (m.end2 ()); // Size n = m.size1 (); n = m.size2 (); // Beginning of reverse range const_reverse_subiterator1_type crit1_begin (cm.rbegin1 ()); const_reverse_subiterator2_type crit2_begin (cm.rbegin2 ()); // End of reverse range const_reverse_subiterator1_type crit1_end (cm.rend1 ()); const_reverse_subiterator2_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 Mutable_MatrixExpressionConcept { typedef ME matrix_expression_type; typedef typename ME::size_type size_type; typedef typename ME::value_type value_type; typedef typename ME::iterator1 subiterator1_type; typedef typename ME::iterator2 subiterator2_type; typedef typename ME::reverse_iterator1 reverse_subiterator1_type; typedef typename ME::reverse_iterator2 reverse_subiterator2_type; void constraints () { function_requires< AssignableConcept
>(); function_requires< MatrixExpressionConcept
>(); matrix_expression_type *mp; matrix_expression_type m = *mp, m1 = *mp, m2 = *mp; size_type i (0), j (0); value_type t = value_type (); // Find (internal?) subiterator1_type it1 (m.find1 (0, i, j)); subiterator2_type it2 (m.find2 (0, i, j)); // Beginning of range subiterator1_type it1_begin (m.begin1 ()); subiterator2_type it2_begin (m.begin2 ()); // End of range subiterator1_type it1_end (m.end1 ()); subiterator2_type it2_end (m.end2 ()); // Swap m1.swap (m2); // Beginning of reverse range reverse_subiterator1_type rit1_begin (m.rbegin1 ()); reverse_subiterator2_type rit2_begin (m.rbegin2 ()); // End of reverse range reverse_subiterator1_type rit1_end (m.rend1 ()); reverse_subiterator2_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; typedef typename V::value_type value_type; typedef const value_type *const_pointer; void constraints () { function_requires< VectorExpressionConcept
>(); size_type n (0); size_type i (0); // Sizing constructor vector_type v (n); // Element support const_pointer p = v.find_element (i); ignore_unused_variable_warning (p); } }; template
struct Mutable_VectorConcept { typedef V vector_type; typedef typename V::size_type size_type; typedef typename V::value_type value_type; typedef value_type *pointer; void constraints () { function_requires< VectorConcept
>(); function_requires< Mutable_VectorExpressionConcept
>(); size_type n (0); value_type t = value_type (); size_type i (0); vector_type v; // Element support pointer p = v.find_element (i); // Element assignment value_type r = v.insert_element (i, t); v.insert_element (i, t) = r; // Zeroing v.clear (); // Resize v.resize (n); ignore_unused_variable_warning (p); ignore_unused_variable_warning (r); } }; template
struct SparseVectorConcept { typedef V vector_type; typedef typename V::size_type size_type; void constraints () { function_requires< VectorConcept
>(); } }; template
struct Mutable_SparseVectorConcept { typedef V vector_type; typedef typename V::size_type size_type; typedef typename V::value_type value_type; void constraints () { function_requires< SparseVectorConcept
>(); function_requires< Mutable_VectorConcept
>(); size_type i (0); vector_type v; // Element erasure v.erase_element (i); } }; template
struct MatrixConcept { typedef M matrix_type; typedef typename M::size_type size_type; typedef typename M::value_type value_type; typedef const value_type *const_pointer; void constraints () { function_requires< MatrixExpressionConcept
>(); size_type n (0); size_type i (0), j (0); // Sizing constructor matrix_type m (n, n); // Element support #ifndef SKIP_BAD const_pointer p = m.find_element (i, j); #else const_pointer p; ignore_unused_variable_warning (i); ignore_unused_variable_warning (j); #endif ignore_unused_variable_warning (p); } }; template
struct Mutable_MatrixConcept { typedef M matrix_type; typedef typename M::size_type size_type; typedef typename M::value_type value_type; typedef value_type *pointer; void constraints () { function_requires< MatrixConcept
>(); function_requires< Mutable_MatrixExpressionConcept
>(); size_type n (0); value_type t = value_type (); size_type i (0), j (0); matrix_type m; // Element support #ifndef SKIP_BAD pointer p = m.find_element (i, j); ignore_unused_variable_warning (i); ignore_unused_variable_warning (j); #else pointer p; #endif // Element assigment value_type r = m.insert_element (i, j, t); m.insert_element (i, j, t) = r; // Zeroing m.clear (); // Resize m.resize (n, n); m.resize (n, n, false); ignore_unused_variable_warning (p); ignore_unused_variable_warning (r); } }; template
struct SparseMatrixConcept { typedef M matrix_type; typedef typename M::size_type size_type; void constraints () { function_requires< MatrixConcept
>(); } }; template
struct Mutable_SparseMatrixConcept { typedef M matrix_type; typedef typename M::size_type size_type; typedef typename M::value_type value_type; void constraints () { function_requires< SparseMatrixConcept
>(); function_requires< Mutable_MatrixConcept
>(); size_type i (0), j (0); matrix_type m; // Elemnent erasure m.erase_element (i, j); } }; 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
(); } 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
> (); } 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
(); } 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
> (); } template
bool operator == (const vector_expression
&e1, const vector_expression
&e2) { typedef typename promote_traits
::promote_type value_type; typedef typename type_traits
::real_type real_type; return norm_inf (e1 - e2) == real_type/*zero*/(); } template
bool operator == (const matrix_expression
&e1, const matrix_expression
&e2) { typedef typename promote_traits
::promote_type value_type; typedef typename type_traits
::real_type real_type; return norm_inf (e1 - e2) == real_type/*zero*/(); } template
struct AdditiveAbelianGroupConcept { typedef T value_type; 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; 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; void constraints () { function_requires< AdditiveAbelianGroupConcept
>(); 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); } }; template
struct Prod_RingWithIdentityConcept { typedef T value_type; void constraints () { function_requires< AdditiveAbelianGroupConcept
>(); 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; void constraints () { function_requires< RingWithIdentityConcept
>(); 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; void constraints () { function_requires< CommutativeRingWithIdentityConcept
>(); 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; void constraints () { function_requires< FieldConcept
>(); function_requires< AdditiveAbelianGroupConcept
>(); 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; void constraints () { function_requires< VectorSpaceConcept
>(); 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 () { // Allow tests to be group to keep down compiler storage requirement #ifdef INTERAL #define INTERNAL_STORAGE #define INTERNAL_VECTOR #define INTERNAL_MATRIX #define INTERNAL_SPECIAL #define INTERNAL_SPARSE #define INTERNAL_EXPRESSION #endif // Element value type for tests typedef float T; // Storage Array #if defined (INTERNAL_STORAGE) || defined (INTERNAL_STORAGE_DENSE) { typedef std::vector
container_model; function_requires< Mutable_StorageArrayConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< Mutable_RandomAccessIteratorConcept
>(); } { typedef bounded_array
container_model; function_requires< Mutable_StorageArrayConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< Mutable_RandomAccessIteratorConcept
>(); } { typedef unbounded_array
container_model; function_requires< Mutable_StorageArrayConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< Mutable_RandomAccessIteratorConcept
>(); } /* FIXME array_adaptors are in progress { typedef array_adaptor
container_model; function_requires< Mutable_StorageArrayConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< Mutable_RandomAccessIteratorConcept
>(); } */ { typedef range container_model; function_requires< IndexSetConcept
>(); function_requires< RandomAccessIteratorConcept
>(); } { typedef slice container_model; function_requires< IndexSetConcept
>(); function_requires< RandomAccessIteratorConcept
>(); } { typedef indirect_array<> container_model; function_requires< IndexSetConcept
>(); function_requires< RandomAccessIteratorConcept
>(); } #endif // Storage Sparse #if defined (INTERNAL_STORAGE) || defined (INTERNAL_STORAGE_SPARSE) { typedef map_array
container_model; function_requires< Mutable_StorageSparseConcept
>(); function_requires< RandomAccessIteratorConcept
>(); function_requires< RandomAccessIteratorConcept
>(); } { typedef std::map
container_model; function_requires< Mutable_StorageSparseConcept
>(); function_requires< BidirectionalIteratorConcept
>(); function_requires< BidirectionalIteratorConcept
>(); } #endif // Vector #if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_DENSE) { typedef vector
container_model; function_requires< RandomAccessContainerConcept
>(); function_requires< Mutable_VectorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); } { typedef zero_vector
container_model; function_requires< VectorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); } { typedef unit_vector
container_model; function_requires< VectorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); } { typedef scalar_vector
container_model; function_requires< VectorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); } { typedef c_vector
container_model; function_requires< Mutable_VectorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); } #endif // Vector Proxies #if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_PROXY) { typedef vector_range
> container_model; function_requires< Mutable_VectorExpressionConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); } { typedef vector_slice
> container_model; function_requires< Mutable_VectorExpressionConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); } { typedef vector_indirect
> container_model; function_requires< Mutable_VectorExpressionConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); function_requires< IndexedRandomAccess1DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess1DIteratorConcept
>(); } #endif // Sparse Vector #if defined (INTERNAL_SPARSE) || defined (INTERNAL_VECTOR_SPARSE) { typedef mapped_vector
container_model; function_requires< Mutable_SparseVectorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); } { typedef compressed_vector
container_model; function_requires< Mutable_SparseVectorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); } { typedef coordinate_vector
container_model; function_requires< Mutable_SparseVectorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); function_requires< IndexedBidirectional1DIteratorConcept
>(); function_requires< Mutable_IndexedBidirectional1DIteratorConcept
>(); } #endif // Matrix #if defined (INTERNAL_MATRIX) || defined (INTERNAL_MATRIX_DENSE) { typedef matrix
container_model; function_requires< Mutable_MatrixConcept
> >(); function_requires< IndexedRandomAccess2DIteratorConcept
>(); function_requires< Mutable_IndexedRandomAccess2DIteratorConcept
>(); function_requires< IndexedRandomAccess2DIteratorConcept