diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.h b/alib2data/src/alphabet/NonlinearVariableSymbol.h
index 66c0bb9ed3da55578ca4ae679bff3aa46cd59ef5..288c01e75def7ae93c37a94ee5007e4cee592ab6 100644
--- a/alib2data/src/alphabet/NonlinearVariableSymbol.h
+++ b/alib2data/src/alphabet/NonlinearVariableSymbol.h
@@ -101,7 +101,7 @@ const SymbolType& NonlinearVariableSymbol < SymbolType >::getSymbol() const {
 
 template < class SymbolType >
 int NonlinearVariableSymbol < SymbolType >::compare ( const NonlinearVariableSymbol & other ) const {
-	std::compare < decltype ( m_symbol ) > comp;
+	static std::compare < decltype ( m_symbol ) > comp;
 
 	return comp ( m_symbol, other.m_symbol );
 }
diff --git a/alib2data/src/alphabet/SymbolSetSymbol.cpp b/alib2data/src/alphabet/SymbolSetSymbol.cpp
index 09538a10fef433a8ada10951d83c45a7e07940fa..9c5d599bc7b634ed00edbab93b66fd4c2d67f658 100644
--- a/alib2data/src/alphabet/SymbolSetSymbol.cpp
+++ b/alib2data/src/alphabet/SymbolSetSymbol.cpp
@@ -31,7 +31,7 @@ const std::set<Symbol>& SymbolSetSymbol::getData() const {
 }
 
 int SymbolSetSymbol::compare(const SymbolSetSymbol& other) const {
-	std::compare<std::set<Symbol>> comp;
+	static std::compare<std::set<Symbol>> comp;
 	return comp(symbol, other.symbol);
 }
 
diff --git a/alib2data/src/alphabet/ranked_symbol.hpp b/alib2data/src/alphabet/ranked_symbol.hpp
index 02db0acde7ceb126c5a0529d5c6ae4220fb450d0..5ade3c9f38d1a90977a52b5b5b8900b2515ac5f1 100644
--- a/alib2data/src/alphabet/ranked_symbol.hpp
+++ b/alib2data/src/alphabet/ranked_symbol.hpp
@@ -115,7 +115,7 @@ int ranked_symbol < SymbolType, RankType >::compare(const ranked_symbol& other)
 	auto first = std::tie ( m_symbol, m_rank );
 	auto second = std::tie ( other.m_symbol, other.m_rank );
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 88ae48c20df5a95965a20d1760ffccadd387b3b8..7c783dead095a6d267a36c064eb2910bd3ac17ea 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -305,7 +305,7 @@ int CompactNFA < SymbolType, StateType >::compare ( const CompactNFA & other ) c
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialState ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialState ( ), other.getFinalStates ( ), other.getTransitions ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 84fd9a902220a05956853a6f88d3471e043fa126..7a30339f0857712d4031f90b6ffe7863e7c828d7 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -272,7 +272,7 @@ int DFA<SymbolType, StateType>::compare ( const DFA & other ) const {
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialState ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialState ( ), other.getFinalStates ( ), other.transitions );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 36ceb7b30c0ae960ea7d05f89af2f0b958ad28d6..a2aa5adada8acd25aa4e92c402dfcbf5ba40a971 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -491,7 +491,7 @@ int EpsilonNFA < SymbolType, EpsilonType, StateType >::compare ( const EpsilonNF
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialState ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialState ( ), other.getFinalStates ( ), other.getTransitions ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index e902fd9ceda300769216c486ab3896338b5cfac1..57c875d008d886697089f7fe22d17fa309eeb07f 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -323,7 +323,7 @@ int ExtendedNFA < SymbolType, StateType >::compare ( const ExtendedNFA & other )
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialState ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialState ( ), other.getFinalStates ( ), other.getTransitions ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index 8286c12864ddf7459cfcba90e5dce91712fe4958..8c987f3e3fc590f2996640300b7b682e89d17e1f 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -313,7 +313,7 @@ int MultiInitialStateNFA < SymbolType, StateType >::compare ( const MultiInitial
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialStates ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialStates ( ), other.getFinalStates ( ), other.getTransitions ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index c1c7d72c279ec9723c9ad57af332aac509443e3a..b050e8ea294c8972b89914e4575b19d7d6190dc7 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -298,7 +298,7 @@ int NFA < SymbolType, StateType >::compare ( const NFA & other ) const {
 	auto first = std::tie ( getStates ( ), getInputAlphabet ( ), getInitialState ( ), getFinalStates ( ), transitions );
 	auto second = std::tie ( other.getStates ( ), other.getInputAlphabet ( ), other.getInitialState ( ), other.getFinalStates ( ), other.getTransitions ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index ea973a6b8e24a376562fecac6120d6b232ce6dda..e08468bc77f698d8f512fcb2a21b637108469325 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -390,7 +390,7 @@ int DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::c
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index ff36a0154f971186291909741d451522e596fa79..74078a4752a7096c6ddbd7d817060db9ed194d29 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -366,7 +366,7 @@ int InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::com
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), getPushdownStoreOperations(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.getPushdownStoreOperations(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index 8c7e554d3de11edca97a97afaa6a295fdda452f9..4dab6203a548224e392a2786daf1e2edd2d1277c 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -362,7 +362,7 @@ int InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::com
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), getPushdownStoreOperations(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.getPushdownStoreOperations(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index 008b111c33a833cec9dd6428e52907076b5b512e..590f0a2a65de1f32a884fd1c3342809976fcf69b 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -278,7 +278,7 @@ int NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::c
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index 2aab9dd0c54e44296b784c37f2c3123eb9d345c6..b37f95ad80c7a859feba832132683fc59111f609 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -333,7 +333,7 @@ int NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolT
 	auto first = std::tie(getStates(), getInputAlphabet(), getOutputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getOutputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index c0ed83185b221769836824984ff03a0407a73988..0bd995e3b7567c228f0bc0cf283b5bad893ef967 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -545,7 +545,7 @@ int RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStor
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index 5a0a1913aadeed9a5209b146a267a64e91b81c93..7bdd3441a875a84007528a671ba9ce71f9694cd9 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -439,7 +439,7 @@ int RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStor
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialStates(), getFinalStates(), getPushdownStoreAlphabet(), getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialStates(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index 84dcfe730165a96c0a9aa4b55cb1c373064931ee..c364ccb194e5b485eb42d2ec7585f29ba52db490 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -321,7 +321,7 @@ int SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, State
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index 24ca2f616027e163ca82cd708bbe273f4f5fb30f..5602b5d998e87e028a1020551d152dab95f9fe80 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -283,7 +283,7 @@ int SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, State
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index 4e03c71f289f327bb9d6e68528f1a5cd26e4b9ef..432f2b731702c103be59a9ccd0c62efb9580e6da 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -461,7 +461,7 @@ int VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >:
 	auto first = std::tie(getStates(), getCallInputAlphabet(), getReturnInputAlphabet(), getLocalInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions);
 	auto second = std::tie(other.getStates(), other.getCallInputAlphabet(), other.getReturnInputAlphabet(), other.getLocalInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index 58185064e8a17e175a514ecbec593e5912eb8df9..ce801c47118fe177b3ad7f492bf080ee72df356c 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -400,7 +400,7 @@ int VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >:
 	auto first = std::tie(getStates(), getCallInputAlphabet(), getReturnInputAlphabet(), getLocalInputAlphabet(), getInitialStates(), getFinalStates(), getPushdownStoreAlphabet(), getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions);
 	auto second = std::tie(other.getStates(), other.getCallInputAlphabet(), other.getReturnInputAlphabet(), other.getLocalInputAlphabet(), other.getInitialStates(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index 6629778541c1532d901e8dbfcffafc2625bca4e6..6c96b2dc084e87963bb3d9b5aeb85c1c16912b7a 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -218,7 +218,7 @@ int DFTA < SymbolType, RankType, StateType >::compare(const DFTA& other) const {
 	auto first = std::tie(getStates(), getInputAlphabet(), getFinalStates(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getFinalStates(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 85a1f23a4b8a15b0d5d54f93ba590637b6edbc8d..ac5e8af6fda41d9f6af7ea75c877c76a254d4616 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -239,7 +239,7 @@ int NFTA < SymbolType, RankType, StateType >::compare(const NFTA& other) const {
 	auto first = std::tie(getStates(), getInputAlphabet(), getFinalStates(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getFinalStates(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index 3c140bbd3cf0059827e7328986e3be7c46306f73..b4f077e997686f5d1396e54e18bb00073acd3295 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -264,7 +264,7 @@ int OneTapeDTM<SymbolType, StateType>::compare(const OneTapeDTM<SymbolType, Stat
 	auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getTapeAlphabet(), getBlankSymbol(), transitions);
 	auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getTapeAlphabet(), other.getBlankSymbol(), other.transitions);
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index 90b583c9f7515bcf69fb36086c9797069b8869da..6b668c145bd071799b1dcd82c6a67ca475be134a 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -194,7 +194,7 @@ int CFG < SymbolType >::compare ( const CFG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index bb27ac72bf022349ac64680fd3e72a6fd909f40a..a24e260b36eb96b252304580ab689f6fef4e9233 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -278,7 +278,7 @@ int CNF < SymbolType >::compare ( const CNF & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index d4c39abbc7f10e6767f7a8738a32077cf3a67428..809b4fcc08afda3a82ab25bef6b7f5b21d8691da 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -216,7 +216,7 @@ int EpsilonFreeCFG < SymbolType >::compare ( const EpsilonFreeCFG & other ) cons
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index f9c024c46a1ec413fe8ce73f908a2a4acbc05253..a16cc04f48790c590f8bcc08fb1f98e8e974367f 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -226,7 +226,7 @@ int GNF < SymbolType >::compare ( const GNF & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 37fbd2632dcd413294a036666fd15777ba4b440c..4c81ce04f88f181ec6dcda8a1ccac687b9819fba 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -260,7 +260,7 @@ int LG < SymbolType >::compare ( const LG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index 1a47c6eb20b9ded1928dea9772e967999e7306d3..a2418715190d7b9a4381025a938f5c9d45129ebf 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -183,7 +183,7 @@ int CSG < SymbolType >::compare ( const CSG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 074b71b2c3f71847e59435943b1224afaeab4a1f..de01bff186d36be6aeb443f54f13501c3b1a1627 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -181,7 +181,7 @@ int NonContractingGrammar < SymbolType >::compare ( const NonContractingGrammar
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 5f5655f23e5833913d75ccb98cf0c4b5e912c591..19229345d7c25a7bec896718b87b027b77054a2b 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -246,7 +246,7 @@ int LeftLG < SymbolType >::compare ( const LeftLG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index bd48006b08bd0ea30127187a267b0b22290cb084..7bc223fcf943d0b85f74541180d43f0240c3255d 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -348,7 +348,7 @@ int LeftRG < SymbolType >::compare ( const LeftRG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index e011f4ab65157e1d9e577b44d5cb501f9f9b6719..ec0c428fcd57ec1112a6761e24b4d9d00e862b3d 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -246,7 +246,7 @@ int RightLG < SymbolType >::compare ( const RightLG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index 947d092668d47febe2d787e191909912e239d661..359d498efd51e67cd9d026d159cbcb6d20f72908 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -291,7 +291,7 @@ int RightRG < SymbolType >::compare ( const RightRG & other ) const {
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index 730b37603d41300053cfcfad2bef777abc65f4ea..dbdb089aadc5550829494609e73d0864a27a91c6 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -163,7 +163,7 @@ int ContextPreservingUnrestrictedGrammar < SymbolType >::compare ( const Context
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 13c1d41f7116e3b5434f6ea9a99365bb2a16a40a..0b5b287d175275574de0d0b5c9c790d5b29994f1 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -161,7 +161,7 @@ int UnrestrictedGrammar < SymbolType >::compare ( const UnrestrictedGrammar & ot
 	auto first = std::tie ( getTerminalAlphabet ( ), getNonterminalAlphabet ( ), getInitialSymbol ( ), rules );
 	auto second = std::tie ( other.getTerminalAlphabet ( ), other.getNonterminalAlphabet ( ), other.getInitialSymbol ( ), other.rules );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/indexes/SuffixArray.h b/alib2data/src/indexes/SuffixArray.h
index 8232de4af35a8231a0b7e00636b07226945fe378..86a87172620a36f5900fe07435770e53d43745fb 100644
--- a/alib2data/src/indexes/SuffixArray.h
+++ b/alib2data/src/indexes/SuffixArray.h
@@ -155,7 +155,7 @@ int SuffixArray < SymbolType >::compare ( const SuffixArray & other ) const {
 	auto first = std::tie ( getData ( ), getString ( ), getAlphabet ( ) );
 	auto second = std::tie ( other.getData ( ), other.getString ( ), getAlphabet ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/indexes/SuffixTrie.h b/alib2data/src/indexes/SuffixTrie.h
index 515eaaa95d3241eb98eb2ec1c5625635e23ce283..1373da81a13accb705d242ecb94ede97476ef026 100644
--- a/alib2data/src/indexes/SuffixTrie.h
+++ b/alib2data/src/indexes/SuffixTrie.h
@@ -188,7 +188,7 @@ int SuffixTrie < EdgeType, NodeType >::compare ( const SuffixTrie & other ) cons
 	auto first = std::tie ( getRoot ( ), getEdgeAlphabet ( ), getNodeAlphabet ( ) );
 	auto second = std::tie ( other.getRoot ( ), other.getEdgeAlphabet ( ), getNodeAlphabet ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/label/LabelSetLabel.cpp b/alib2data/src/label/LabelSetLabel.cpp
index 69976e3708e1017959d4c2652d707b286288dfab..1d8cc234a3fd0149cca57274a1aa24e642a11334 100644
--- a/alib2data/src/label/LabelSetLabel.cpp
+++ b/alib2data/src/label/LabelSetLabel.cpp
@@ -32,7 +32,7 @@ const std::set<Label>& LabelSetLabel::getData() const {
 }
 
 int LabelSetLabel::compare(const LabelSetLabel& other) const {
-	std::compare<std::set<Label>> comp;
+	static std::compare<std::set<Label>> comp;
 	return comp(label, other.label);
 }
 
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 7ab95c272e26d6019d2d29f7881bfb7994e699fc..7532a0cd99d4002531feccda937fdd557b0f3097 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -168,7 +168,7 @@ int FormalRegExp < SymbolType >::compare ( const FormalRegExp & other ) const {
 	auto first = std::tie ( m_regExp.getStructure ( ), getAlphabet ( ) );
 	auto second = std::tie ( other.m_regExp.getStructure ( ), other.getAlphabet ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/regexp/formal/FormalRegExpSymbol.h b/alib2data/src/regexp/formal/FormalRegExpSymbol.h
index c48c6a97d7128dd5f22ad1d31e7eab362e72a74d..00f20d7fe6a89c06230e2678c260175e8211a026 100644
--- a/alib2data/src/regexp/formal/FormalRegExpSymbol.h
+++ b/alib2data/src/regexp/formal/FormalRegExpSymbol.h
@@ -106,7 +106,7 @@ std::smart_ptr < UnboundedRegExpElement < SymbolType > > FormalRegExpSymbol < Sy
 
 template < class SymbolType >
 int FormalRegExpSymbol < SymbolType >::compare ( const FormalRegExpSymbol & other ) const {
-	std::compare < decltype ( m_symbol ) > comp;
+	static std::compare < decltype ( m_symbol ) > comp;
 
 	return comp ( m_symbol, other.m_symbol );
 }
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 579e655f88f83bf16e1c86ce23cb5d45167e08d9..63668192478a27b5d2d44cd667c5f12923e9f337 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -168,7 +168,7 @@ int UnboundedRegExp < SymbolType >::compare ( const UnboundedRegExp & other ) co
 	auto first = std::tie ( m_regExp.getStructure ( ), getAlphabet ( ) );
 	auto second = std::tie ( other.m_regExp.getStructure ( ), other.getAlphabet ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
index f4d4e611012d137ea461a38546e41e47fd43852d..d05e9d28208163845ec14c2b1536c27e0fdc5e70 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
@@ -147,7 +147,7 @@ std::smart_ptr < FormalRegExpElement < SymbolType > > UnboundedRegExpAlternation
 
 template < class SymbolType >
 int UnboundedRegExpAlternation < SymbolType >::compare ( const UnboundedRegExpAlternation < SymbolType > & other ) const {
-	std::compare < typename std::decay < decltype ( getElements ( ) ) >::type > comp;
+	static std::compare < typename std::decay < decltype ( getElements ( ) ) >::type > comp;
 
 	return comp ( getElements ( ), other.getElements ( ) );
 }
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
index eaa21a085d81437f3f36618e2fb853c920f4aec9..794e9f9abea6bb637c4bde5e2d956140190fdb80 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
@@ -147,7 +147,7 @@ std::smart_ptr < FormalRegExpElement < SymbolType > > UnboundedRegExpConcatenati
 
 template < class SymbolType >
 int UnboundedRegExpConcatenation < SymbolType >::compare ( const UnboundedRegExpConcatenation < SymbolType > & other ) const {
-	std::compare < typename std::decay < decltype ( getElements ( ) ) >::type > comp;
+	static std::compare < typename std::decay < decltype ( getElements ( ) ) >::type > comp;
 
 	return comp ( getElements ( ), other.getElements ( ) );
 }
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
index c1ada6f4ecc4c4a5dc1729a32693b79882a5b6de..c1c0a57dfdecc2ca258d88dda84ae0eb08679b05 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
@@ -108,7 +108,7 @@ std::smart_ptr < FormalRegExpElement < SymbolType > > UnboundedRegExpSymbol < Sy
 
 template < class SymbolType >
 int UnboundedRegExpSymbol < SymbolType >::compare ( const UnboundedRegExpSymbol & other ) const {
-	std::compare < decltype ( m_symbol ) > comp;
+	static std::compare < decltype ( m_symbol ) > comp;
 
 	return comp ( m_symbol, other.m_symbol );
 }
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index a8f3770455657e91343cbb47caad498bf77fec5d..bb82d2bcf404fae07d9d9049dea2ff209cfed413 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -199,7 +199,7 @@ int FormalRTE < SymbolType, RankType >::compare ( const FormalRTE & other ) cons
 	auto first = std::tie ( m_rte, getAlphabet ( ), getSubstitutionAlphabet ( ) );
 	auto second = std::tie ( m_rte, other.getAlphabet ( ), getSubstitutionAlphabet ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/rte/formal/FormalRTEIteration.h b/alib2data/src/rte/formal/FormalRTEIteration.h
index 50be3ec68a4cfb1c323b1ef5601e57fce270a6f2..fa4b1982a3d029c3e71d8f97322d45438b2e50a4 100644
--- a/alib2data/src/rte/formal/FormalRTEIteration.h
+++ b/alib2data/src/rte/formal/FormalRTEIteration.h
@@ -153,7 +153,7 @@ int FormalRTEIteration < SymbolType, RankType >::compare ( const FormalRTEIterat
 	auto first = std::tie ( getElement ( ), getSubstitutionSymbol ( ) );
 	auto second = std::tie ( other.getElement ( ), other.getSubstitutionSymbol ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/rte/formal/FormalRTESubstitution.h b/alib2data/src/rte/formal/FormalRTESubstitution.h
index ca45b93670a772033e7c6ffd145ed060844556f0..e092770b03326402e806f891dc538d7eaca5790e 100644
--- a/alib2data/src/rte/formal/FormalRTESubstitution.h
+++ b/alib2data/src/rte/formal/FormalRTESubstitution.h
@@ -176,7 +176,7 @@ int FormalRTESubstitution < SymbolType, RankType >::compare ( const FormalRTESub
 	auto first = std::tie ( getLeftElement ( ), getRightElement ( ), getSubstitutionSymbol ( ) );
 	auto second = std::tie ( other.getLeftElement ( ), other.getRightElement ( ), other.getSubstitutionSymbol ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h b/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
index 07d63d5f2ca4a11f719ba774986f6a88d119bab0..bb0aa449d2ed0ba8cfe5018dd32c828c2b7adab1 100644
--- a/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
+++ b/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
@@ -121,7 +121,7 @@ int FormalRTESymbolAlphabet < SymbolType, RankType >::compare ( const FormalRTES
 	auto first = std::tie ( this->getSymbol ( ), this->getChildren ( ) );
 	auto second = std::tie ( other.getSymbol ( ), other.getChildren ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/rte/formal/FormalRTESymbolSubst.h b/alib2data/src/rte/formal/FormalRTESymbolSubst.h
index b907d528605cb0c3d697b1cd77babb0a476034c4..56cd6ad0101a04e3f83326959efc74d9425eebc5 100644
--- a/alib2data/src/rte/formal/FormalRTESymbolSubst.h
+++ b/alib2data/src/rte/formal/FormalRTESymbolSubst.h
@@ -87,7 +87,7 @@ FormalRTESymbolSubst < SymbolType, RankType > * FormalRTESymbolSubst < SymbolTyp
 
 template < class SymbolType, class RankType >
 int FormalRTESymbolSubst < SymbolType, RankType >::compare ( const FormalRTESymbolSubst & other ) const {
-	std::compare < decltype ( this->getSymbol ( ) ) > comp;
+	static std::compare < decltype ( this->getSymbol ( ) ) > comp;
 
 	return comp ( this->getSymbol ( ), other.getSymbol ( ) );
 }
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index 513da9e8e0514e191109a1ed2d033f004a5be17c..b73a41a81c6ca8a7d69192dcdc1736c0141aaad0 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -161,7 +161,7 @@ int CyclicString < SymbolType >::compare(const CyclicString& other) const {
 	auto first = std::tie ( m_Data, getAlphabet ( ) );
 	auto second = std::tie ( other.m_Data, other.getAlphabet ( ) );
 
-	std::compare<decltype(first)> comp;
+	static std::compare<decltype(first)> comp;
 	return comp(first, second);
 }
 
diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h
index 799499c4b0b3231c86af23e87e82cce0256102ab..58b8eff98609313a6ef6e6c6ae24614171050ad9 100644
--- a/alib2data/src/string/Epsilon.h
+++ b/alib2data/src/string/Epsilon.h
@@ -115,7 +115,7 @@ bool Epsilon < SymbolType >::isEmpty() const {
 
 template < class SymbolType >
 int Epsilon < SymbolType >::compare(const Epsilon& other) const {
-	std::compare<std::set<SymbolType>> comp;
+	static std::compare<std::set<SymbolType>> comp;
 	return comp(getAlphabet(), other.getAlphabet());
 }
 
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index e8e7557443181a2935cb5ac9cab98cc3cb6847da..b3de2c9f88800794e0b101545cdffad1637c014b 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -218,7 +218,7 @@ int LinearString < SymbolType >::compare ( const LinearString & other ) const {
 	auto first = std::tie ( m_Data, getAlphabet() );
 	auto second = std::tie ( other.m_Data, other.getAlphabet() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 7ab57a38e113877d45d71dc99ecd64daa32821db..ae2b41614be72adfc4b78337d6f5cc57b2ac8c0d 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -260,7 +260,7 @@ int PrefixRankedBarNonlinearPattern < SymbolType, RankType >::compare ( const Pr
 	auto first = std::tie ( m_Data, getAlphabet ( ), getSubtreeWildcard ( ), getNonlinearVariables ( ), getBars ( ), getVariablesBar ( ) );
 	auto second = std::tie ( other.m_Data, other.getAlphabet ( ), other.getSubtreeWildcard ( ), other.getNonlinearVariables ( ), other.getBars ( ), other.getVariablesBar ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 3e5d3e25bf9f676879f390482b0bd5297ff06135..08b6516546b9878be532e2016a7ffd17f5fb0043 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -226,7 +226,7 @@ int PrefixRankedBarPattern < SymbolType, RankType >::compare ( const PrefixRanke
 	auto first = std::tie ( m_Data, getAlphabet(), getSubtreeWildcard(), getBars(), getVariablesBar() );
 	auto second = std::tie ( other.m_Data, other.getAlphabet(), other.getSubtreeWildcard(), other.getBars(), other.getVariablesBar() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 6b560bf189ef5aa7e6efe023df2ed2aca8d2cb29..b223692296187f035bb346b7fa605219d1a950d4 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -200,7 +200,7 @@ int PrefixRankedBarTree < SymbolType, RankType >::compare ( const PrefixRankedBa
 	auto first = std::tie ( m_Data, getAlphabet(), getBars() );
 	auto second = std::tie ( other.m_Data, other.getAlphabet(), other.getBars() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index e29d8c70817fe312e472989ba3998bca92dee802..497bbf76821bdd7434f65f65adf3064f24256d13 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -216,7 +216,7 @@ int PrefixRankedNonlinearPattern < SymbolType, RankType >::compare ( const Prefi
 	auto first = std::tie ( m_Data, getAlphabet ( ), getSubtreeWildcard ( ), getNonlinearVariables ( ) );
 	auto second = std::tie ( other.m_Data, other.getAlphabet ( ), other.getSubtreeWildcard ( ), other.getNonlinearVariables ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 2480d6a81db15a129aee280ea39cd367093ffc80..c9c0adc895d0ccd7b2d932c0198be7a52bb0d6fb 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -188,7 +188,7 @@ int PrefixRankedPattern < SymbolType, RankType >::compare ( const PrefixRankedPa
 	auto first = std::tie ( m_Data, getAlphabet ( ), getSubtreeWildcard ( ) );
 	auto second = std::tie ( other.m_Data, other.getAlphabet ( ), other.getSubtreeWildcard ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index fcb73f78e0b4599c04ffa1d8fe081527cfb587b8..12e02ca1ed7e5644c9792eb4becd73e3bfadb931 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -175,7 +175,7 @@ int PrefixRankedTree < SymbolType, RankType >::compare ( const PrefixRankedTree
 	auto first = std::tie ( m_Data, getAlphabet() );
 	auto second = std::tie ( other.m_Data, other.getAlphabet() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 464c70c8c57cf6474111e12165131597dcc46034..ed71ded39d0e6d8cb56c48c6537ed1b85870db3e 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -196,7 +196,7 @@ int RankedNonlinearPattern < SymbolType, RankType >::compare ( const RankedNonli
 	auto first = std::tie ( content, getAlphabet(), getSubtreeWildcard(), getNonlinearVariables() );
 	auto second = std::tie ( other.content, other.getAlphabet(), other.getSubtreeWildcard(), getNonlinearVariables() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 527ff6dd08c5cce44fc4e6c6b9b19aa66b3d2526..6460d17fccf2d9a90410c0264aadbb7b5a8d487d 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -186,7 +186,7 @@ int RankedPattern < SymbolType, RankType >::compare ( const RankedPattern & othe
 	auto first = std::tie ( content, getAlphabet(), getSubtreeWildcard() );
 	auto second = std::tie ( other.content, other.getAlphabet(), other.getSubtreeWildcard() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 773318cb629d5cd1870e8eacbc34eefbc57729a8..5fc5a8c3a4bb27e7ea4bd5944001bdbd77234d31 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -181,7 +181,7 @@ int RankedTree < SymbolType, RankType >::compare ( const RankedTree & other ) co
 	auto first = std::tie ( content, getAlphabet() );
 	auto second = std::tie ( other.content, other.getAlphabet() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 55436bec2df5e059d029cfdaa50f52ce603e2039..5585a4acd580b9a26b0884a75042036daf90f9f2 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -190,7 +190,7 @@ int PrefixBarTree < SymbolType >::compare ( const PrefixBarTree & other ) const
 	auto first = std::tie ( m_Data, getAlphabet ( ), getBar ( ) );
 	auto second = std::tie ( other.m_Data, other.getAlphabet ( ), other.getBar ( ) );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index d6e45fed681bcf6bb72377bc155f692310846049..21116d347418a4a78fd973495d872b7318b4fcb0 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -190,7 +190,7 @@ int UnrankedNonlinearPattern < SymbolType >::compare ( const UnrankedNonlinearPa
 	auto first = std::tie ( content, getAlphabet(), getSubtreeWildcard(), getNonlinearVariables() );
 	auto second = std::tie ( other.content, other.getAlphabet(), other.getSubtreeWildcard(), getNonlinearVariables() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 09a89e49f2a28d986572c7ad453cabf51faf1243..9fd51cf7bc79aab5a825f82f1270f9f7e8e62c14 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -174,7 +174,7 @@ int UnrankedPattern < SymbolType >::compare ( const UnrankedPattern & other ) co
 	auto first = std::tie ( content, getAlphabet(), getSubtreeWildcard() );
 	auto second = std::tie ( other.content, other.getAlphabet(), other.getSubtreeWildcard() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index f9a4825b89e9a63be2d271f22ef389f09b0d3d19..c504e6155b96f58bc4d9baad13a0b04f513e55bf 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -169,7 +169,7 @@ int UnrankedTree < SymbolType >::compare ( const UnrankedTree & other ) const {
 	auto first = std::tie ( content, getAlphabet() );
 	auto second = std::tie ( other.content, other.getAlphabet() );
 
-	std::compare < decltype ( first ) > comp;
+	static std::compare < decltype ( first ) > comp;
 
 	return comp ( first, second );
 }