diff --git a/alib2std/src/extensions/allocFix.hpp b/alib2std/src/extensions/allocFix.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d8ad8005a3fead456bfab29af8e3eedc8d6b56d2 --- /dev/null +++ b/alib2std/src/extensions/allocFix.hpp @@ -0,0 +1,23 @@ +/* + * allocFix.hpp + * + * Created on: Mar 6, 2018 + * Author: Jan Travnicek + */ + +#ifndef __ALLOC_FIX_HPP_ +#define __ALLOC_FIX_HPP_ + +namespace ext { + +template < class Alloc > +class AllocFix { +public: + AllocFix ( ) { + static Alloc alloc; + } +}; + +} /* namespace ext */ + +#endif /* __ALLOC_FIX_HPP_ */ diff --git a/alib2std/src/extensions/deque.hpp b/alib2std/src/extensions/deque.hpp index 368f848a6076a5cd73e4e6fe1338b565eb7db281..a705f21e41d9b5281c6432a7fef52852e5a8b4a5 100644 --- a/alib2std/src/extensions/deque.hpp +++ b/alib2std/src/extensions/deque.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < class T, class Alloc = std::allocator < T > > -class deque : public std::deque < T, Alloc > { +class deque : public std::deque < T, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::deque < T, Alloc >::deque; diff --git a/alib2std/src/extensions/forward_list.hpp b/alib2std/src/extensions/forward_list.hpp index a50135ecc85445a15c8159f820e3dca021c6a003..70c10f3f14ceea13d943a008b5d3df5430f71628 100644 --- a/alib2std/src/extensions/forward_list.hpp +++ b/alib2std/src/extensions/forward_list.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < class T, class Alloc = std::allocator < T > > -class forward_list : public std::forward_list < T, Alloc > { +class forward_list : public std::forward_list < T, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::forward_list < T, Alloc >::forward_list; diff --git a/alib2std/src/extensions/list.hpp b/alib2std/src/extensions/list.hpp index fb8c0b0d2f7f5b476cb96409315ff694fe441bf2..c97d514cec19584b0541db14e297a501d6a718ef 100644 --- a/alib2std/src/extensions/list.hpp +++ b/alib2std/src/extensions/list.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < class T, class Alloc = std::allocator < T > > -class list : public std::list < T, Alloc > { +class list : public std::list < T, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::list < T, Alloc >::list; diff --git a/alib2std/src/extensions/map.hpp b/alib2std/src/extensions/map.hpp index 79ac0846cdbd4eeb5d618da56fe960a1ec7dd87e..173c3de12be933f2345598798487dad2bed9dae5 100644 --- a/alib2std/src/extensions/map.hpp +++ b/alib2std/src/extensions/map.hpp @@ -16,11 +16,12 @@ #include "compare.hpp" #include "pair.hpp" +#include "allocFix.hpp" namespace ext { template < typename T, typename R, typename Cmp = std::less < >, typename Alloc = std::allocator < std::pair < const T, R > > > -class map : public std::map < T, R, Cmp, Alloc > { +class map : public std::map < T, R, Cmp, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::map< T, R, Cmp, Alloc >::map; diff --git a/alib2std/src/extensions/set.hpp b/alib2std/src/extensions/set.hpp index 9adf02d3458601aa8058bccd71b186504dfbd72e..7ed0e02ebb8aca175533741a89fbdc382449b4d6 100644 --- a/alib2std/src/extensions/set.hpp +++ b/alib2std/src/extensions/set.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < typename T, typename Cmp = std::less < >, typename Alloc = std::allocator < T > > -class set : public std::set < T, Cmp, Alloc > { +class set : public std::set < T, Cmp, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::set < T, Cmp, Alloc >::set; diff --git a/alib2std/src/extensions/unordered_map.hpp b/alib2std/src/extensions/unordered_map.hpp index a5533798abfbf12a95f33cbd79171212ffa9830b..6d55d72fef3f0a08056001260923ba129be3f0ee 100644 --- a/alib2std/src/extensions/unordered_map.hpp +++ b/alib2std/src/extensions/unordered_map.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < class T, class R, class Hash = std::hash < T >, class KeyEqual = std::equal_to < T >, class Alloc = std::allocator < std::pair < const T, R > > > -class unordered_map : public std::unordered_map < T, R, Hash, KeyEqual, Alloc > { +class unordered_map : public std::unordered_map < T, R, Hash, KeyEqual, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::unordered_map < T, R, Hash, KeyEqual, Alloc >::unordered_map; diff --git a/alib2std/src/extensions/vector.hpp b/alib2std/src/extensions/vector.hpp index e152bc971b0d43c556997b8d8938439beff67e1d..7566ca0631129ad5408c7f839c231026fcd64cd5 100644 --- a/alib2std/src/extensions/vector.hpp +++ b/alib2std/src/extensions/vector.hpp @@ -14,11 +14,12 @@ #include <string> #include "compare.hpp" +#include "allocFix.hpp" namespace ext { template < class T, class Alloc = std::allocator < T > > -class vector : public std::vector < T, Alloc > { +class vector : public std::vector < T, Alloc >, AllocFix < Alloc > { public: #ifdef __clang__ using std::vector< T, Alloc >::vector;