From cfed1b3dbdd9acdb38d09ecbe94e51d5f4d65377 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Tue, 6 Mar 2018 22:19:17 +0100 Subject: [PATCH] fix undefined reference to allocator::allocator() --- alib2std/src/extensions/allocFix.hpp | 23 +++++++++++++++++++++++ alib2std/src/extensions/deque.hpp | 3 ++- alib2std/src/extensions/forward_list.hpp | 3 ++- alib2std/src/extensions/list.hpp | 3 ++- alib2std/src/extensions/map.hpp | 3 ++- alib2std/src/extensions/set.hpp | 3 ++- alib2std/src/extensions/unordered_map.hpp | 3 ++- alib2std/src/extensions/vector.hpp | 3 ++- 8 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 alib2std/src/extensions/allocFix.hpp diff --git a/alib2std/src/extensions/allocFix.hpp b/alib2std/src/extensions/allocFix.hpp new file mode 100644 index 0000000000..d8ad8005a3 --- /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 368f848a60..a705f21e41 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 a50135ecc8..70c10f3f14 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 fb8c0b0d2f..c97d514cec 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 79ac0846cd..173c3de12b 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 9adf02d345..7ed0e02ebb 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 a5533798ab..6d55d72fef 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 e152bc971b..7566ca0631 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; -- GitLab