1 | /* |
2 | Copyright 2020 Glen Joseph Fernandes |
3 | (glenjofe@gmail.com) |
4 | |
5 | Distributed under the Boost Software License, Version 1.0. |
6 | (http://www.boost.org/LICENSE_1_0.txt) |
7 | */ |
8 | #include <boost/config.hpp> |
9 | #if !defined(BOOST_NO_CXX11_ALLOCATOR) |
10 | #include <boost/numeric/ublas/matrix.hpp> |
11 | #include <new> |
12 | |
13 | template<class T> |
14 | struct Allocator { |
15 | typedef T value_type; |
16 | |
17 | Allocator() BOOST_NOEXCEPT { } |
18 | |
19 | template<class U> |
20 | Allocator(const Allocator<U>&) BOOST_NOEXCEPT { } |
21 | |
22 | T* allocate(std::size_t size) { |
23 | return static_cast<T*>(::operator new(sizeof(T) * size)); |
24 | } |
25 | |
26 | void deallocate(T* ptr, std::size_t) { |
27 | ::operator delete(ptr); |
28 | } |
29 | }; |
30 | |
31 | template<class T, class U> |
32 | bool operator==(const Allocator<T>&, const Allocator<U>&) BOOST_NOEXCEPT |
33 | { |
34 | return true; |
35 | } |
36 | |
37 | template<class T, class U> |
38 | bool operator!=(const Allocator<T>&, const Allocator<U>&) BOOST_NOEXCEPT |
39 | { |
40 | return false; |
41 | } |
42 | |
43 | int main() |
44 | { |
45 | boost::numeric::ublas::matrix<int, |
46 | boost::numeric::ublas::row_major, |
47 | boost::numeric::ublas::unbounded_array<int, |
48 | Allocator<int> > > matrix(4, 4); |
49 | matrix(1, 2) = 3; |
50 | } |
51 | #endif |
52 | |