⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 concepts.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
📖 第 1 页 / 共 5 页
字号:
        typedef T value_type;        typedef V vector_type;        typedef M matrix_type;        void constraints () {            function_requires< VectorSpaceConcept<value_type, vector_type> >();            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<T> container_model;            function_requires< Mutable_StorageArrayConcept<container_model> >();            function_requires< RandomAccessIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_RandomAccessIteratorConcept<container_model::iterator> >();        }        {            typedef bounded_array<T, 1> container_model;            function_requires< Mutable_StorageArrayConcept<container_model> >();            function_requires< RandomAccessIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_RandomAccessIteratorConcept<container_model::iterator> >();        }        {            typedef unbounded_array<T> container_model;            function_requires< Mutable_StorageArrayConcept<container_model> >();            function_requires< RandomAccessIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_RandomAccessIteratorConcept<container_model::iterator> >();        }/* FIXME array_adaptors are in progress        {            typedef array_adaptor<T> container_model;            function_requires< Mutable_StorageArrayConcept<container_model> >();            function_requires< RandomAccessIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_RandomAccessIteratorConcept<container_model::iterator> >();        }*/        {            typedef range container_model;            function_requires< IndexSetConcept<range> >();            function_requires< RandomAccessIteratorConcept<range::const_iterator> >();        }        {            typedef slice container_model;            function_requires< IndexSetConcept<range> >();            function_requires< RandomAccessIteratorConcept<range::const_iterator> >();        }        {            typedef indirect_array<> container_model;            function_requires< IndexSetConcept<range> >();            function_requires< RandomAccessIteratorConcept<range::const_iterator> >();        }#endif        // Storage Sparse#if defined (INTERNAL_STORAGE) || defined (INTERNAL_STORAGE_SPARSE)        {           typedef map_array<std::size_t, T> container_model;           function_requires< Mutable_StorageSparseConcept<container_model> >();           function_requires< RandomAccessIteratorConcept<container_model::const_iterator> >();           function_requires< RandomAccessIteratorConcept<container_model::iterator> >();        }        {           typedef std::map<std::size_t, T> container_model;           function_requires< Mutable_StorageSparseConcept<container_model > >();           function_requires< BidirectionalIteratorConcept<container_model::const_iterator> >();           function_requires< BidirectionalIteratorConcept<container_model::iterator> >();        }#endif        // Vector#if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_DENSE)        {           typedef vector<T> container_model;           function_requires< RandomAccessContainerConcept<container_model> >();           function_requires< Mutable_VectorConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {           typedef zero_vector<T> container_model;           function_requires< VectorConcept<container_model> >();           function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_iterator> >();           function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_reverse_iterator> >();        }        {           typedef unit_vector<T> container_model;           function_requires< VectorConcept<container_model> >();           function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_iterator> >();           function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_reverse_iterator> >();        }        {           typedef scalar_vector<T> container_model;           function_requires< VectorConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();        }        {           typedef c_vector<T, 1> container_model;           function_requires< Mutable_VectorConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }#endif        // Vector Proxies#if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_PROXY)        {           typedef vector_range<vector<T> > container_model;           function_requires< Mutable_VectorExpressionConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {           typedef vector_slice<vector<T> > container_model;           function_requires< Mutable_VectorExpressionConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {           typedef vector_indirect<vector<T> > container_model;           function_requires< Mutable_VectorExpressionConcept<container_model> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();           function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();           function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }#endif        // Sparse Vector#if defined (INTERNAL_SPARSE) || defined (INTERNAL_VECTOR_SPARSE)        {            typedef mapped_vector<T> container_model;            function_requires< Mutable_SparseVectorConcept<container_model> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::reverse_iterator> >();        }        {            typedef compressed_vector<T> container_model;            function_requires< Mutable_SparseVectorConcept<container_model> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::reverse_iterator> >();        }        {            typedef coordinate_vector<T> container_model;            function_requires< Mutable_SparseVectorConcept<container_model> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedBidirectional1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedBidirectional1DIteratorConcept<container_model::reverse_iterator> >();        }#endif        // Matrix#if defined (INTERNAL_MATRIX) || defined (INTERNAL_MATRIX_DENSE)        {            typedef matrix<T> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::iterator1, container_model::iterator2> >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::reverse_iterator1, container_model::reverse_iterator2> >();        }        {            typedef vector_of_vector<T> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::iterator1, container_model::iterator2> >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::reverse_iterator1, container_model::reverse_iterator2> >();        }        {            typedef zero_matrix<T> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedBidirectional2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< IndexedBidirectional2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();        }        {            typedef identity_matrix<T> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedBidirectional2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< IndexedBidirectional2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();        }        {            typedef scalar_matrix<T> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();        }        {            typedef c_matrix<T, 1, 1> container_model;            function_requires< Mutable_MatrixConcept<matrix<T> > >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_iterator1, container_model::const_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::iterator1, container_model::iterator2> >();            function_requires< IndexedRandomAccess2DIteratorConcept<container_model::const_reverse_iterator1, container_model::const_reverse_iterator2> >();            function_requires< Mutable_IndexedRandomAccess2DIteratorConcept<container_model::reverse_iterator1, container_model::reverse_iterator2> >();        }#endif        // Matrix Proxies#if defined (INTERNAL_MATRIX) || defined (INTERNAL_MATRIX_PROXY)        {            typedef matrix_row<matrix<T> > container_model;            function_requires< Mutable_VectorExpressionConcept<container_model> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {            typedef matrix_column<matrix<T> > container_model;            function_requires< Mutable_VectorExpressionConcept<container_model> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {            typedef matrix_vector_range<matrix<T> > container_model;            function_requires< Mutable_VectorExpressionConcept<container_model> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::iterator> >();            function_requires< IndexedRandomAccess1DIteratorConcept<container_model::const_reverse_iterator> >();            function_requires< Mutable_IndexedRandomAccess1DIteratorConcept<container_model::reverse_iterator> >();        }        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -