From ffcb2b7c2dd83c5669264afa8680e6a6b4457d79 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 10 Nov 2017 14:23:13 +0100
Subject: [PATCH] fixes in linear set

---
 alib2std/src/extensions/linear_set.hpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/alib2std/src/extensions/linear_set.hpp b/alib2std/src/extensions/linear_set.hpp
index e3dda1d76b..a307035180 100644
--- a/alib2std/src/extensions/linear_set.hpp
+++ b/alib2std/src/extensions/linear_set.hpp
@@ -29,7 +29,7 @@ class linear_set {
 
 	void sort_unique ( ) {
 		std::sort ( m_data.begin ( ), m_data.end ( ), m_comp );
-		m_data.resize ( std::distance ( m_data.begin ( ), std::unique ( m_data.begin ( ), m_data.end ( ), std::bind ( &linear_set<int>::eq, std::ref( * this ), std::placeholders::_1, std::placeholders::_2 ) ) ) );
+		m_data.resize ( std::distance ( m_data.begin ( ), std::unique ( m_data.begin ( ), m_data.end ( ), std::bind ( &linear_set < T >::eq, std::ref( * this ), std::placeholders::_1, std::placeholders::_2 ) ) ) );
 	}
 
 public:
@@ -136,8 +136,16 @@ public:
 		return m_data.erase ( position );
 	}
 
+	size_t erase (const T& val) {
+		const_iterator position = lower_bound ( val );
+		if ( position != end ( ) && eq ( * position, val ) )
+			return m_data.erase ( position ), 1;
+		else
+			return 0;
+	}
+
 	iterator erase (const_iterator first, const_iterator last) {
-		return m_data.erace ( first, last );
+		return m_data.erase ( first, last );
 	}
 
 	const_iterator find (const T& val) const {
-- 
GitLab