Index: src/Common/ScopedMap.h
===================================================================
--- src/Common/ScopedMap.h	(revision 98a2b1dcb5b037f88a8c2c8d5eb5c131908de6db)
+++ src/Common/ScopedMap.h	(revision db9d7a9835ff0293d13710d50a8d08d572592387)
@@ -46,5 +46,6 @@
 	typedef std::vector< Scope > ScopeList;
 
-	ScopeList scopes; ///< scoped list of maps
+	/// Scoped list of maps.
+	ScopeList scopes;
 public:
 	typedef typename MapType::key_type key_type;
@@ -146,11 +147,4 @@
 	}
 
-	template< typename value_type_t >
-	std::pair< iterator, bool > insert( iterator at, value_type_t && value ) {
-		MapType & scope = (*at.scopes)[ at.level ].map;
-		std::pair< typename MapType::iterator, bool > res = scope.insert( std::forward<value_type_t>( value ) );
-		return std::make_pair( iterator(scopes, std::move( res.first ), at.level), std::move( res.second ) );
-	}
-
 	template< typename value_t >
 	std::pair< iterator, bool > insert( const Key & key, value_t && value ) { return insert( std::make_pair( key, std::forward<value_t>( value ) ) ); }
@@ -173,10 +167,5 @@
 	}
 
-	iterator erase( iterator pos ) {
-		MapType & scope = (*pos.scopes)[ pos.level ].map;
-		const typename iterator::wrapped_iterator & new_it = scope.erase( pos.it );
-		iterator it( *pos.scopes, new_it, pos.level );
-		return it.next_valid();
-	}
+	iterator erase( iterator pos );
 
 	size_type count( const Key & key ) const {
@@ -352,4 +341,13 @@
 };
 
+template<typename Key, typename Value, typename Note>
+typename ScopedMap<Key, Value, Note>::iterator
+		ScopedMap<Key, Value, Note>::erase( iterator pos ) {
+	MapType & scope = (*pos.scopes)[ pos.level ].map;
+	const typename iterator::wrapped_iterator & new_it = scope.erase( pos.it );
+	iterator it( *pos.scopes, new_it, pos.level );
+	return it.next_valid();
+}
+
 // Local Variables: //
 // tab-width: 4 //
