From a495ae8c4f1f7a35fd882a16d495f7004f698352 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 12 May 2015 09:13:17 +0200
Subject: [PATCH] make alib2algo compilant with llvm

---
 alib2algo/src/automaton/convert/ToGrammar.h   |   2 +
 .../src/automaton/convert/ToGrammarLeftRG.h   |   4 +
 .../src/automaton/convert/ToGrammarRightRG.h  |   4 +
 alib2algo/src/automaton/convert/ToRegExp.h    |   4 +
 .../src/automaton/convert/ToRegExpAlgebraic.h |   4 +
 .../convert/ToRegExpStateElimination.h        |   4 +
 .../src/automaton/determinize/Determinize.h   |   3 +
 .../automaton/properties/AllEpsilonClosure.h  |   2 +
 .../src/automaton/properties/EpsilonClosure.h |   1 +
 .../automaton/properties/ReachableStates.h    |   2 +
 .../src/automaton/properties/UsefullStates.h  |   2 +
 alib2algo/src/automaton/run/Accept.h          |   2 +
 alib2algo/src/automaton/run/Occurrences.h     |   2 +
 alib2algo/src/automaton/run/Result.h          |   2 +
 .../simplify/EpsilonRemoverIncoming.h         |   2 +
 .../simplify/EpsilonRemoverOutgoing.h         |   2 +
 alib2algo/src/automaton/simplify/Minimize.h   |   2 +
 .../automaton/simplify/MinimizeBrzozowski.h   |   4 +
 alib2algo/src/automaton/simplify/Normalize.h  |   2 +
 alib2algo/src/automaton/simplify/Rename.h     |   2 +
 .../automaton/simplify/SingleInitialState.h   |   2 +
 alib2algo/src/automaton/simplify/Total.h      |   6 +-
 alib2algo/src/automaton/simplify/Trim.h       |   3 +-
 .../simplify/UnreachableStatesRemover.h       |   2 +
 .../automaton/simplify/UselessStatesRemover.h |   2 +
 .../transform/AutomataConcatenation.h         |   2 +
 .../AutomataConcatenationEpsilonTransition.h  |   2 +
 .../AutomataIntersectionCartesianProduct.h    |   2 +
 .../transform/AutomataUnionCartesianProduct.h |   2 +
 .../AutomataUnionEpsilonTransition.h          |   2 +
 .../automaton/transform/AutomatonIteration.h  |   2 +
 .../AutomatonIterationEpsilonTransition.h     |   2 +
 .../src/automaton/transform/Compaction.h      |   6 +-
 .../src/automaton/transform/PDAToRHPDA.h      |   6 +-
 .../src/automaton/transform/RHPDAToPDA.h      |   4 +
 alib2algo/src/automaton/transform/Reverse.h   |   6 +-
 .../src/common/StringContainerConverter.hpp   |   6 +-
 alib2algo/src/grammar/convert/ToAutomaton.h   |   2 +
 .../src/grammar/convert/ToGrammarLeftRG.h     |  30 +++---
 .../src/grammar/convert/ToGrammarRightRG.h    |  30 +++---
 alib2algo/src/grammar/convert/ToRegExp.cpp    |  36 -------
 alib2algo/src/grammar/convert/ToRegExp.h      |  13 +--
 .../src/grammar/convert/ToRegExpAlgebraic.h   |  30 +++---
 .../src/grammar/generate/GenerateUpToLength.h |   2 +
 .../src/grammar/properties/IsLanguageEmpty.h  |   2 +
 .../properties/IsLanguageGeneratingEpsilon.h  |   2 +
 .../properties/NonterminalUnitRuleCycle.h     |   2 +
 .../grammar/properties/NullableNonterminals.h |   2 +
 .../properties/ProductiveNonterminals.h       |   2 +
 .../grammar/properties/UnreachableSymbols.h   |   2 +
 .../src/grammar/simplify/EpsilonRemover.h     |   2 +
 .../grammar/simplify/LeftRecursionRemover.h   |   2 +
 .../src/grammar/simplify/SimpleRulesRemover.h |   2 +
 alib2algo/src/grammar/simplify/ToCNF.h        |   2 +
 alib2algo/src/grammar/simplify/ToGNF.cpp      |   2 -
 alib2algo/src/grammar/simplify/ToGNF.h        |   2 +
 alib2algo/src/grammar/simplify/Trim.h         |   2 +
 .../simplify/UnproductiveSymbolsRemover.h     |   2 +
 .../simplify/UnreachableSymbolsRemover.h      |   2 +
 .../src/graph/shortestpath/BellmanFord.h      |   2 +
 alib2algo/src/graph/shortestpath/Dijkstra.h   |   2 +
 .../src/graph/shortestpath/FloydWarshall.h    |   2 +
 alib2algo/src/graph/sort/TopologicalSort.h    |   2 +
 alib2algo/src/graph/spanningtree/JarnikPrim.h |   2 +
 alib2algo/src/graph/traverse/Bfs.h            |   2 +
 alib2algo/src/graph/traverse/Dfs.h            |   2 +
 alib2algo/src/regexp/GlushkovSymbol.cpp       |   7 +-
 alib2algo/src/regexp/GlushkovTraversal.cpp    | 100 +++++++++---------
 alib2algo/src/regexp/convert/ToAutomaton.h    |   2 +
 .../regexp/convert/ToAutomatonDerivation.h    |   2 +
 .../src/regexp/convert/ToAutomatonGlushkov.h  |   2 +
 .../src/regexp/convert/ToAutomatonThompson.h  |   2 +
 alib2algo/src/regexp/convert/ToGrammar.h      |   2 +
 .../convert/ToGrammarRightRGDerivation.h      |   2 +
 .../regexp/convert/ToGrammarRightRGGlushkov.h |   2 +
 alib2algo/src/regexp/properties/RegExpEmpty.h |   2 +
 .../src/regexp/properties/RegExpEpsilon.h     |   3 +-
 .../src/regexp/simplify/RegExpOptimize.h      |   2 +
 .../src/regexp/transform/RegExpAlternate.h    |   2 +
 .../src/regexp/transform/RegExpConcatenate.h  |   2 +
 .../src/regexp/transform/RegExpDerivation.h   |   2 +
 .../src/regexp/transform/RegExpIntegral.h     |   2 +
 .../src/regexp/transform/RegExpIterate.h      |   2 +
 alib2algo/src/string/naive/ExactCompare.h     |   2 +
 alib2algo/src/string/naive/ExactEqual.h       |   2 +
 .../src/string/simplify/NormalizeAlphabet.h   |   2 +
 .../src/string/simplify/NormalizeRotation.h   |   2 +
 alib2algo/src/stringology/exact/BorderArray.h |   2 +
 .../stringology/exact/BoyerMooreHorspool.h    |   2 +
 .../stringology/exact/ExactFactorAutomaton.h  |   2 +
 alib2algo/src/stringology/exact/ExactMatch.h  |   2 +
 .../exact/ExactMatchingAutomaton.h            |   2 +
 ...ultiNondeterministicSubsequenceAutomaton.h |   2 +
 ...xactNondeterministicSubsequenceAutomaton.h |   2 +
 .../exact/ExactSubsequenceAutomaton.h         |   2 +
 alib2data/src/automaton/AutomatonBase.h       |   8 +-
 alib2data/src/grammar/GrammarBase.h           |   2 +-
 97 files changed, 312 insertions(+), 156 deletions(-)

diff --git a/alib2algo/src/automaton/convert/ToGrammar.h b/alib2algo/src/automaton/convert/ToGrammar.h
index ecc050680c..c0def5d6df 100644
--- a/alib2algo/src/automaton/convert/ToGrammar.h
+++ b/alib2algo/src/automaton/convert/ToGrammar.h
@@ -21,6 +21,8 @@ namespace convert {
 
 class ToGrammar : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	ToGrammar() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/automaton/convert/ToGrammarLeftRG.h b/alib2algo/src/automaton/convert/ToGrammarLeftRG.h
index 26e7f96752..462d4bf866 100644
--- a/alib2algo/src/automaton/convert/ToGrammarLeftRG.h
+++ b/alib2algo/src/automaton/convert/ToGrammarLeftRG.h
@@ -25,6 +25,8 @@ namespace convert {
  */
 class ToGrammarLeftRG : public automaton::VisitableConstFSMBase {
 public:
+	ToGrammarLeftRG() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
@@ -35,6 +37,8 @@ public:
 	static grammar::LeftRG convert(const automaton::DFA& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const automaton::NFA& automaton) const;
diff --git a/alib2algo/src/automaton/convert/ToGrammarRightRG.h b/alib2algo/src/automaton/convert/ToGrammarRightRG.h
index 448e32e38c..4807e826c6 100644
--- a/alib2algo/src/automaton/convert/ToGrammarRightRG.h
+++ b/alib2algo/src/automaton/convert/ToGrammarRightRG.h
@@ -25,6 +25,8 @@ namespace convert {
  */
 class ToGrammarRightRG : public automaton::VisitableConstFSMBase {
 public:
+	ToGrammarRightRG() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
@@ -35,6 +37,8 @@ public:
 	static grammar::RightRG convert(const automaton::DFA& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const automaton::NFA& automaton) const;
diff --git a/alib2algo/src/automaton/convert/ToRegExp.h b/alib2algo/src/automaton/convert/ToRegExp.h
index 3718c38af0..a50bcdfbcd 100644
--- a/alib2algo/src/automaton/convert/ToRegExp.h
+++ b/alib2algo/src/automaton/convert/ToRegExp.h
@@ -22,6 +22,8 @@ namespace convert {
 
 class ToRegExp  : public automaton::VisitableConstFSMBase {
 public:
+	ToRegExp() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
@@ -29,6 +31,8 @@ public:
 	static regexp::RegExp convert(const automaton::Automaton& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const EpsilonNFA& automaton) const;
 	void Visit(void*, const MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const NFA& automaton) const;
diff --git a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h
index 54d1f89f7b..dd158a7893 100644
--- a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h
+++ b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h
@@ -29,6 +29,8 @@ namespace convert {
  */
 class ToRegExpAlgebraic : public automaton::VisitableConstFSMBase {
 public:
+	ToRegExpAlgebraic() {}
+
 	/**
 	 * Performs conversion.
 	 * @return regular expression equivalent to input automaton.
@@ -41,6 +43,8 @@ public:
 	static regexp::UnboundedRegExp convert(const automaton::DFA& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const automaton::EpsilonNFA&) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA&) const;
 	void Visit(void*, const automaton::NFA&) const;
diff --git a/alib2algo/src/automaton/convert/ToRegExpStateElimination.h b/alib2algo/src/automaton/convert/ToRegExpStateElimination.h
index f11cd29792..5a7962995b 100644
--- a/alib2algo/src/automaton/convert/ToRegExpStateElimination.h
+++ b/alib2algo/src/automaton/convert/ToRegExpStateElimination.h
@@ -28,6 +28,8 @@ namespace convert {
  */
 class ToRegExpStateElimination : public automaton::VisitableConstFSMBase {
 public:
+	ToRegExpStateElimination() {}
+
 	/**
 	 * Performs conversion.
 	 * @param automaton automaton to convert
@@ -39,6 +41,8 @@ public:
 	static regexp::RegExp convert(const T& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const automaton::NFA& automaton) const;
diff --git a/alib2algo/src/automaton/determinize/Determinize.h b/alib2algo/src/automaton/determinize/Determinize.h
index 94f936c5f0..ef939cbe80 100644
--- a/alib2algo/src/automaton/determinize/Determinize.h
+++ b/alib2algo/src/automaton/determinize/Determinize.h
@@ -31,6 +31,9 @@ namespace determinize {
  * Class for running determinization algorithm on fsm.
  */
 class Determinize : public automaton::VisitableAutomatonBase::const_visitor_type {
+public:
+	Determinize() {}
+
 private:
 	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
diff --git a/alib2algo/src/automaton/properties/AllEpsilonClosure.h b/alib2algo/src/automaton/properties/AllEpsilonClosure.h
index c7fc6bfeed..f3aecf94ca 100644
--- a/alib2algo/src/automaton/properties/AllEpsilonClosure.h
+++ b/alib2algo/src/automaton/properties/AllEpsilonClosure.h
@@ -20,6 +20,8 @@ namespace properties {
 
 class AllEpsilonClosure : public VisitableAutomatonBase::const_visitor_type {
 public:
+	AllEpsilonClosure() {}
+
 	static std::map<automaton::State, std::set<automaton::State>> allEpsilonClosure( const automaton::Automaton & automaton);
 
 	/**
diff --git a/alib2algo/src/automaton/properties/EpsilonClosure.h b/alib2algo/src/automaton/properties/EpsilonClosure.h
index f2dd9f8ab9..fc055dd8b9 100644
--- a/alib2algo/src/automaton/properties/EpsilonClosure.h
+++ b/alib2algo/src/automaton/properties/EpsilonClosure.h
@@ -21,6 +21,7 @@ namespace properties {
 
 class EpsilonClosure : public VisitableAutomatonBase::const_visitor_type {
 public:
+	EpsilonClosure() {}
 	static std::set<automaton::State> epsilonClosure( const automaton::Automaton & automaton, const automaton::State & state );
 
 	/**
diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h
index 88ede0f89d..aee2eaff8e 100644
--- a/alib2algo/src/automaton/properties/ReachableStates.h
+++ b/alib2algo/src/automaton/properties/ReachableStates.h
@@ -21,6 +21,8 @@ namespace properties {
 
 class ReachableStates : public VisitableAutomatonBase::const_visitor_type {
 public:
+	ReachableStates() {}
+
 	static std::set<automaton::State> reachableStates( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/properties/UsefullStates.h b/alib2algo/src/automaton/properties/UsefullStates.h
index 3fa2b58735..d58b7e861b 100644
--- a/alib2algo/src/automaton/properties/UsefullStates.h
+++ b/alib2algo/src/automaton/properties/UsefullStates.h
@@ -21,6 +21,8 @@ namespace properties {
 
 class UsefullStates : public VisitableAutomatonBase::const_visitor_type {
 public:
+	UsefullStates() {}
+
 	static std::set<automaton::State> usefullStates( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/run/Accept.h b/alib2algo/src/automaton/run/Accept.h
index ed451178ce..e8cb279368 100644
--- a/alib2algo/src/automaton/run/Accept.h
+++ b/alib2algo/src/automaton/run/Accept.h
@@ -19,6 +19,8 @@ namespace run {
 
 class Accept : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Accept() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/automaton/run/Occurrences.h b/alib2algo/src/automaton/run/Occurrences.h
index dc15fb5848..4f838ee55e 100644
--- a/alib2algo/src/automaton/run/Occurrences.h
+++ b/alib2algo/src/automaton/run/Occurrences.h
@@ -19,6 +19,8 @@ namespace run {
 
 class Occurrences : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Occurrences() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/automaton/run/Result.h b/alib2algo/src/automaton/run/Result.h
index acdebc95b5..29aac2185d 100644
--- a/alib2algo/src/automaton/run/Result.h
+++ b/alib2algo/src/automaton/run/Result.h
@@ -20,6 +20,8 @@ namespace run {
 
 class Result : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Result() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h
index 8a79bb5d25..fc96737d3d 100644
--- a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h
+++ b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h
@@ -25,6 +25,8 @@ namespace simplify {
 
 class EpsilonRemoverIncoming : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	EpsilonRemoverIncoming() {}
+
 	static automaton::Automaton remove( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h
index e76b99a711..9966620209 100644
--- a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h
+++ b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h
@@ -25,6 +25,8 @@ namespace simplify {
 
 class EpsilonRemoverOutgoing : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	EpsilonRemoverOutgoing() {}
+
 	static automaton::Automaton remove( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/simplify/Minimize.h b/alib2algo/src/automaton/simplify/Minimize.h
index d71753aa99..0d2de23012 100644
--- a/alib2algo/src/automaton/simplify/Minimize.h
+++ b/alib2algo/src/automaton/simplify/Minimize.h
@@ -17,6 +17,8 @@ namespace simplify {
 
 class Minimize : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Minimize() {}
+
 	/**
 	 * @param dfa automaton to minimize
 	 */
diff --git a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h
index c21dc2d49b..4d21d0d19e 100644
--- a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h
+++ b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h
@@ -17,6 +17,8 @@ namespace simplify {
 
 class MinimizeBrzozowski : public automaton::VisitableConstFSMBase {
 public:
+	MinimizeBrzozowski() {}
+
 	/**
 	 * @param dfa automaton to minimize
 	 */
@@ -26,6 +28,8 @@ public:
 	static automaton::DFA minimize(const automaton::NFA& nfa);
 
 protected:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const automaton::EpsilonNFA& automaton) const;
 	void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const automaton::NFA& automaton) const;
diff --git a/alib2algo/src/automaton/simplify/Normalize.h b/alib2algo/src/automaton/simplify/Normalize.h
index 791ae5a70d..25c8b05279 100644
--- a/alib2algo/src/automaton/simplify/Normalize.h
+++ b/alib2algo/src/automaton/simplify/Normalize.h
@@ -18,6 +18,8 @@ namespace simplify {
 
 class Normalize : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Normalize() {}
+
 	/**
 	 * @param dfa automaton to normalize
 	 */
diff --git a/alib2algo/src/automaton/simplify/Rename.h b/alib2algo/src/automaton/simplify/Rename.h
index 9312f94ed8..55f9efac91 100644
--- a/alib2algo/src/automaton/simplify/Rename.h
+++ b/alib2algo/src/automaton/simplify/Rename.h
@@ -22,6 +22,8 @@ namespace simplify {
 
 class Rename : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Rename() {}
+
 	/**
 	 * @param dfa automaton to rename
 	 */
diff --git a/alib2algo/src/automaton/simplify/SingleInitialState.h b/alib2algo/src/automaton/simplify/SingleInitialState.h
index 881fe35269..e15fb96370 100644
--- a/alib2algo/src/automaton/simplify/SingleInitialState.h
+++ b/alib2algo/src/automaton/simplify/SingleInitialState.h
@@ -21,6 +21,8 @@ namespace simplify {
  */
 class SingleInitialState : public VisitableAutomatonBase::const_visitor_type {
 public:
+	SingleInitialState() {}
+
 	/**
 	 * Computes epsilon closure of a state in epsilon nonfree automaton
 	 */
diff --git a/alib2algo/src/automaton/simplify/Total.h b/alib2algo/src/automaton/simplify/Total.h
index 9730b0b96e..10f817895d 100644
--- a/alib2algo/src/automaton/simplify/Total.h
+++ b/alib2algo/src/automaton/simplify/Total.h
@@ -23,8 +23,10 @@ namespace simplify {
  * Makes finite automaton's transition function total.
  * Source: Melichar: Algorithm 2.22
  */
-class Total : public VisitableConstFSMBase {
+class Total : public automaton::VisitableConstFSMBase {
 public:
+	Total() {}
+
 	/**
 	 * Computes epsilon closure of a state in epsilon nonfree automaton
 	 */
@@ -34,6 +36,8 @@ public:
 	static automaton::DFA total(const automaton::DFA& automaton);
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const EpsilonNFA& automaton) const;
 	void Visit(void*, const MultiInitialStateNFA& automaton) const;
 	void Visit(void*, const NFA& automaton) const;
diff --git a/alib2algo/src/automaton/simplify/Trim.h b/alib2algo/src/automaton/simplify/Trim.h
index 2cb8fd2b5f..2cd0c10aea 100644
--- a/alib2algo/src/automaton/simplify/Trim.h
+++ b/alib2algo/src/automaton/simplify/Trim.h
@@ -6,7 +6,7 @@
  */
 
 #ifndef AUTOMATON_TRIM_H_
-#define AUTOMAONT_TRIM_H_
+#define AUTOMATON_TRIM_H_
 
 #include <algorithm>
 #include <deque>
@@ -19,6 +19,7 @@ namespace simplify {
 
 class Trim : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	Trim() {}
 	static automaton::Automaton trim( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
index b584132dda..9a7877f3f3 100644
--- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
+++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
@@ -19,6 +19,8 @@ namespace simplify {
 
 class UnreachableStatesRemover : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	UnreachableStatesRemover() {}
+
 	static automaton::Automaton remove( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.h b/alib2algo/src/automaton/simplify/UselessStatesRemover.h
index 38c8662632..1b18987c30 100644
--- a/alib2algo/src/automaton/simplify/UselessStatesRemover.h
+++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.h
@@ -19,6 +19,8 @@ namespace simplify {
 
 class UselessStatesRemover : public automaton::VisitableAutomatonBase::const_visitor_type {
 public:
+	UselessStatesRemover() {}
+
 	static automaton::Automaton remove( const automaton::Automaton & automaton );
 
 	/**
diff --git a/alib2algo/src/automaton/transform/AutomataConcatenation.h b/alib2algo/src/automaton/transform/AutomataConcatenation.h
index fb4cdda014..dc1dd54b3f 100644
--- a/alib2algo/src/automaton/transform/AutomataConcatenation.h
+++ b/alib2algo/src/automaton/transform/AutomataConcatenation.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomataConcatenation : public automaton::VisitableAutomatonBase::const_promoting_visitor_type
 {
 public:
+	AutomataConcatenation() {}
+
 	static automaton::Automaton concatenation(const automaton::Automaton& first, const automaton::Automaton& second);
 
 	static automaton::NFA concatenation(const automaton::DFA& first, const automaton::DFA& second);
diff --git a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h
index 133b493f7a..e8b27489db 100644
--- a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h
+++ b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomataConcatenationEpsilonTransition : public automaton::VisitableAutomatonBase::const_promoting_visitor_type
 {
 public:
+	AutomataConcatenationEpsilonTransition() {}
+
 	static automaton::Automaton concatenation(const automaton::Automaton& first, const automaton::Automaton& second);
 
 	static automaton::EpsilonNFA concatenation(const automaton::DFA& first, const automaton::DFA& second);
diff --git a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h
index 2369fda445..5cba54c245 100644
--- a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h
+++ b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomataIntersectionCartesianProduct : public automaton::VisitableAutomatonBase::const_promoting_visitor_type
 {
 public:
+	AutomataIntersectionCartesianProduct() {}
+
 	static automaton::Automaton intersection(const automaton::Automaton& first, const automaton::Automaton& second);
 
 	static automaton::NFA intersection(const automaton::NFA& first, const automaton::NFA& second);
diff --git a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h
index 424f6f39d8..a06aed29c3 100644
--- a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h
+++ b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomataUnionCartesianProduct : public automaton::VisitableAutomatonBase::const_promoting_visitor_type
 {
 public:
+	AutomataUnionCartesianProduct() {}
+
 	static automaton::Automaton unification(const automaton::Automaton& first, const automaton::Automaton& second);
 
 	static automaton::NFA unification(const automaton::NFA& first, const automaton::NFA& second);
diff --git a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h
index 7a79873aed..c367d1d76a 100644
--- a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h
+++ b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomataUnionEpsilonTransition : public automaton::VisitableAutomatonBase::const_promoting_visitor_type
 {
 public:
+	AutomataUnionEpsilonTransition() {}
+
 	static automaton::Automaton unification(const automaton::Automaton& first, const automaton::Automaton& second);
 
 	static automaton::EpsilonNFA unification(const automaton::EpsilonNFA& first, const automaton::EpsilonNFA& second);
diff --git a/alib2algo/src/automaton/transform/AutomatonIteration.h b/alib2algo/src/automaton/transform/AutomatonIteration.h
index 1a7646abd8..fb7d2728e8 100644
--- a/alib2algo/src/automaton/transform/AutomatonIteration.h
+++ b/alib2algo/src/automaton/transform/AutomatonIteration.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomatonIteration : public automaton::VisitableAutomatonBase::const_visitor_type
 {
 public:
+	AutomatonIteration() {}
+
 	static automaton::Automaton iteration(const automaton::Automaton& automaton);
 
 	template<class T>
diff --git a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h
index 80cf82296d..307d6c55fe 100644
--- a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h
+++ b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h
@@ -24,6 +24,8 @@ namespace transform
 class AutomatonIterationEpsilonTransition : public automaton::VisitableAutomatonBase::const_visitor_type
 {
 public:
+	AutomatonIterationEpsilonTransition() {}
+
 	static automaton::Automaton iteration(const automaton::Automaton& automaton);
 
 	template<class T>
diff --git a/alib2algo/src/automaton/transform/Compaction.h b/alib2algo/src/automaton/transform/Compaction.h
index 520ad9a028..e0da50de24 100644
--- a/alib2algo/src/automaton/transform/Compaction.h
+++ b/alib2algo/src/automaton/transform/Compaction.h
@@ -17,8 +17,10 @@ namespace transform {
 /**
  * Transforms FSM to CompactNFA
  */
-class Compaction : public VisitableConstFSMBase {
+class Compaction : public automaton::VisitableConstFSMBase {
 public:
+	Compaction() {}
+
 	static automaton::CompactNFA convert( const automaton::DFA& automaton);
 	static automaton::CompactNFA convert( const automaton::NFA& automaton);
 	static automaton::CompactNFA convert( const automaton::CompactNFA& automaton);
@@ -31,6 +33,8 @@ public:
 	static automaton::Automaton convert( const automaton::Automaton & automaton );
 
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const CompactNFA& automaton) const;
 	void Visit(void*, const DFA& automaton) const;
 	void Visit(void*, const EpsilonNFA& automaton) const;
diff --git a/alib2algo/src/automaton/transform/PDAToRHPDA.h b/alib2algo/src/automaton/transform/PDAToRHPDA.h
index d0fa1a715a..504043797d 100644
--- a/alib2algo/src/automaton/transform/PDAToRHPDA.h
+++ b/alib2algo/src/automaton/transform/PDAToRHPDA.h
@@ -17,8 +17,10 @@
 
 namespace automaton {
 
-class PDAToRHPDA : public VisitableConstPDABase {
+class PDAToRHPDA : public automaton::VisitableConstPDABase {
 public:
+	PDAToRHPDA() {}
+
 	static automaton::RealTimeHeightDeterministicDPDA convert( const automaton::RealTimeHeightDeterministicDPDA & pda);
 	static automaton::RealTimeHeightDeterministicDPDA convert( const automaton::DPDA & pda);
 	static automaton::RealTimeHeightDeterministicNPDA convert( const automaton::RealTimeHeightDeterministicNPDA & pda);
@@ -29,6 +31,8 @@ public:
 	 */
 	static automaton::Automaton convert( const automaton::Automaton & automaton );
 private:
+	using automaton::VisitableConstPDABase::Visit;
+
 	void Visit(void*, const DPDA& automaton) const;
 	void Visit(void*, const SinglePopDPDA& automaton) const;
 	void Visit(void*, const InputDrivenNPDA& automaton) const;
diff --git a/alib2algo/src/automaton/transform/RHPDAToPDA.h b/alib2algo/src/automaton/transform/RHPDAToPDA.h
index ece6eb275c..fe256487c7 100644
--- a/alib2algo/src/automaton/transform/RHPDAToPDA.h
+++ b/alib2algo/src/automaton/transform/RHPDAToPDA.h
@@ -19,6 +19,8 @@ namespace automaton {
 
 class RHPDAToPDA : public VisitableConstPDABase {
 public:
+	RHPDAToPDA() {}
+
 	static automaton::DPDA convert( const automaton::RealTimeHeightDeterministicDPDA & pda);
 	static automaton::DPDA convert( const automaton::DPDA & pda);
 	static automaton::NPDA convert( const automaton::RealTimeHeightDeterministicNPDA & pda);
@@ -29,6 +31,8 @@ public:
 	 */
 	static automaton::Automaton convert( const automaton::Automaton & automaton );
 private:
+	using automaton::VisitableConstPDABase::Visit;
+
 	void Visit(void*, const DPDA& automaton) const;
 	void Visit(void*, const SinglePopDPDA& automaton) const;
 	void Visit(void*, const InputDrivenDPDA& automaton) const;
diff --git a/alib2algo/src/automaton/transform/Reverse.h b/alib2algo/src/automaton/transform/Reverse.h
index c8528d9091..de596f31a5 100644
--- a/alib2algo/src/automaton/transform/Reverse.h
+++ b/alib2algo/src/automaton/transform/Reverse.h
@@ -15,8 +15,10 @@ namespace automaton {
 
 namespace transform {
 
-class Reverse : public VisitableConstFSMBase {
+class Reverse : public automaton::VisitableConstFSMBase {
 public:
+	Reverse() {}
+
 	static automaton::MultiInitialStateNFA convert(const automaton::DFA& automaton);
 	static automaton::MultiInitialStateNFA convert(const automaton::NFA& automaton);
 	static automaton::MultiInitialStateNFA convert(const automaton::MultiInitialStateNFA& automaton);
@@ -28,6 +30,8 @@ public:
 	 */
 	static automaton::Automaton convert( const automaton::Automaton & automaton );
 private:
+	using automaton::VisitableConstFSMBase::Visit;
+
 	void Visit(void*, const DFA& automaton) const;
 	void Visit(void*, const NFA& automaton) const;
 	void Visit(void*, const MultiInitialStateNFA& automaton) const;
diff --git a/alib2algo/src/common/StringContainerConverter.hpp b/alib2algo/src/common/StringContainerConverter.hpp
index e37a80ef87..ec62386e92 100644
--- a/alib2algo/src/common/StringContainerConverter.hpp
+++ b/alib2algo/src/common/StringContainerConverter.hpp
@@ -23,6 +23,8 @@ namespace common {
 template<class R, class S, class T>
 class StringContainerConverter : public string::VisitableStringBase::const_visitor_type {
 public:
+	StringContainerConverter() {}
+
 	/**
 	 * Performs conversion from contaier<String> to container<T>.
 	 * @return container<T>.
@@ -61,7 +63,7 @@ inline void VisitHelper(void* data, const string::Epsilon& text) {
 
 template<class R, class S, class T,
 	typename std::enable_if< ! std::is_constructible<T, string::Epsilon>::value >::type* = nullptr >
-inline void VisitHelper(void* data, const string::Epsilon& text) {
+inline void VisitHelper(void*, const string::Epsilon&) {
 	throw exception::AlibException("Unsupported string type Epsilon");
 }
 
@@ -81,7 +83,7 @@ inline void VisitHelper(void* data, const string::LinearString& text) {
 
 template<class R, class S, class T,
 	typename std::enable_if< ! std::is_constructible<T, string::LinearString>::value >::type* = nullptr >
-inline void VisitHelper(void* data, const string::LinearString& text) {
+inline void VisitHelper(void*, const string::LinearString&) {
 	throw exception::AlibException("Unsupported string type LinearString");
 }
 
diff --git a/alib2algo/src/grammar/convert/ToAutomaton.h b/alib2algo/src/grammar/convert/ToAutomaton.h
index aeea0edfbc..4fba464c35 100644
--- a/alib2algo/src/grammar/convert/ToAutomaton.h
+++ b/alib2algo/src/grammar/convert/ToAutomaton.h
@@ -25,6 +25,8 @@ namespace convert {
  */
 class ToAutomaton : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	ToAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @param grammar Regular grammar to convert.
diff --git a/alib2algo/src/grammar/convert/ToGrammarLeftRG.h b/alib2algo/src/grammar/convert/ToGrammarLeftRG.h
index 58648f091a..19212cb58e 100644
--- a/alib2algo/src/grammar/convert/ToGrammarLeftRG.h
+++ b/alib2algo/src/grammar/convert/ToGrammarLeftRG.h
@@ -2,7 +2,7 @@
  * ToGrammarLeftRG.h
  *
  *  Created on: 8. 3. 2014
- *      Author: Tomas Pecka
+ *	  Author: Tomas Pecka
  */
 
 #ifndef TO_GRAMMAR_LEFT_RG_H_
@@ -22,21 +22,25 @@ namespace convert {
 class ToGrammarLeftRG : public grammar::VisitableConstRGBase
 {
 public:
-    /**
-     * Performs conversion.
-     * @param grammar Right regular grammar to convert
-     * @return left regular grammar which is equivalent to source right regular grammar.
-     */
-    static grammar::LeftRG convert(const grammar::Grammar& grammar);
-    static grammar::LeftRG convert(const grammar::RightRG& grammar);
+	ToGrammarLeftRG() {}
+
+	/**
+	 * Performs conversion.
+	 * @param grammar Right regular grammar to convert
+	 * @return left regular grammar which is equivalent to source right regular grammar.
+	 */
+	static grammar::LeftRG convert(const grammar::Grammar& grammar);
+	static grammar::LeftRG convert(const grammar::RightRG& grammar);
 
 private:
-    void Visit(void*, const grammar::RightRG& grammar) const;
-    void Visit(void*, const grammar::LeftRG& grammar) const;
-    void Visit(void*, const grammar::RightLG& grammar) const;
-    void Visit(void*, const grammar::LeftLG& grammar) const;
+	using grammar::VisitableConstRGBase::Visit;
+
+	void Visit(void*, const grammar::RightRG& grammar) const;
+	void Visit(void*, const grammar::LeftRG& grammar) const;
+	void Visit(void*, const grammar::RightLG& grammar) const;
+	void Visit(void*, const grammar::LeftLG& grammar) const;
 
-    static const ToGrammarLeftRG TO_GRAMMAR_LEFT_RG;
+	static const ToGrammarLeftRG TO_GRAMMAR_LEFT_RG;
 };
 
 } /* namespace convert */
diff --git a/alib2algo/src/grammar/convert/ToGrammarRightRG.h b/alib2algo/src/grammar/convert/ToGrammarRightRG.h
index 468b72aa3a..99bc56b535 100644
--- a/alib2algo/src/grammar/convert/ToGrammarRightRG.h
+++ b/alib2algo/src/grammar/convert/ToGrammarRightRG.h
@@ -2,7 +2,7 @@
  * ToGrammarRightRG.h
  *
  *  Created on: 8. 3. 2014
- *      Author: Tomas Pecka
+ *	  Author: Tomas Pecka
  */
 
 #ifndef TO_GRAMMAR_RIGHT_RG_H_
@@ -22,21 +22,25 @@ namespace convert {
 class ToGrammarRightRG : public grammar::VisitableConstRGBase
 {
 public:
-   /**
-     * Performs conversion.
-     * @param grammar Left regular grammar to convert
-     * @return right regular grammar which is equivalent to source left regular grammar.
-     */
-    static grammar::RightRG convert(const grammar::Grammar& grammar);
-    static grammar::RightRG convert(const grammar::LeftRG& grammar);
+	ToGrammarRightRG() {}
+
+	/**
+	 * Performs conversion.
+	 * @param grammar Left regular grammar to convert
+	 * @return right regular grammar which is equivalent to source left regular grammar.
+	 */
+	static grammar::RightRG convert(const grammar::Grammar& grammar);
+	static grammar::RightRG convert(const grammar::LeftRG& grammar);
 
 private:
-    void Visit(void*, const grammar::RightRG& grammar) const;
-    void Visit(void*, const grammar::LeftRG& grammar) const;
-    void Visit(void*, const grammar::RightLG& grammar) const;
-    void Visit(void*, const grammar::LeftLG& grammar) const;
+	using grammar::VisitableConstRGBase::Visit;
+
+	void Visit(void*, const grammar::RightRG& grammar) const;
+	void Visit(void*, const grammar::LeftRG& grammar) const;
+	void Visit(void*, const grammar::RightLG& grammar) const;
+	void Visit(void*, const grammar::LeftLG& grammar) const;
 
-    static const ToGrammarRightRG TO_GRAMMAR_RIGHT_RG;
+	static const ToGrammarRightRG TO_GRAMMAR_RIGHT_RG;
 };
 
 } /* namespace convert */
diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp
index fe2696f7f4..7f6d8587db 100644
--- a/alib2algo/src/grammar/convert/ToRegExp.cpp
+++ b/alib2algo/src/grammar/convert/ToRegExp.cpp
@@ -44,42 +44,6 @@ void ToRegExp::Visit(void*, const grammar::LeftLG&) const
 	throw exception::AlibException("Unsupported grammar type LeftLG");
 }
 
-void ToRegExp::Visit(void*, const grammar::LG& ) const {
-	throw exception::AlibException("Unsupported grammar type LG");
-}
-
-void ToRegExp::Visit(void*, const grammar::CFG& ) const {
-	throw exception::AlibException("Unsupported grammar type CFG");
-}
-
-void ToRegExp::Visit(void*, const grammar::EpsilonFreeCFG& ) const {
-	throw exception::AlibException("Unsupported grammar type EpsilonFreeCFG");
-}
-
-void ToRegExp::Visit(void*, const grammar::CNF& ) const {
-	throw exception::AlibException("Unsupported grammar type CFG");
-}
-
-void ToRegExp::Visit(void*, const grammar::GNF& ) const {
-	throw exception::AlibException("Unsupported grammar type GNF");
-}
-
-void ToRegExp::Visit(void*, const grammar::CSG&) const {
-	throw exception::AlibException("Unsupported grammar type CSG");
-}
-
-void ToRegExp::Visit(void*, const grammar::NonContractingGrammar&) const {
-	throw exception::AlibException("Unsupported grammar type NonConctractingGrammar");
-}
-
-void ToRegExp::Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar&) const {
-	throw exception::AlibException("Unsupported grammar type ContextPreservingUnrestrictedGrammar");
-}
-
-void ToRegExp::Visit(void*, const grammar::UnrestrictedGrammar&) const {
-	throw exception::AlibException("Unsupported grammar type UnrestrictedGrammar");
-}
-
 const ToRegExp ToRegExp::TO_REG_EXP;
 
 } /* namespace convert */
diff --git a/alib2algo/src/grammar/convert/ToRegExp.h b/alib2algo/src/grammar/convert/ToRegExp.h
index aace07b45d..02acd08001 100644
--- a/alib2algo/src/grammar/convert/ToRegExp.h
+++ b/alib2algo/src/grammar/convert/ToRegExp.h
@@ -21,6 +21,8 @@ namespace convert {
 class ToRegExp : public grammar::VisitableConstRGBase
 {
 public:
+	ToRegExp() {}
+
 	/**
 	 * @return regexp equivalent to source right regular grammar.
 	 * @param grammar Grammar to convert
@@ -28,19 +30,12 @@ public:
 	static regexp::RegExp convert(const grammar::Grammar& grammar);
 
 protected:
+	using grammar::VisitableConstRGBase::Visit;
+
 	void Visit(void*, const grammar::RightRG& grammar) const;
 	void Visit(void*, const grammar::LeftRG& grammar) const;
 	void Visit(void*, const grammar::RightLG& grammar) const;
 	void Visit(void*, const grammar::LeftLG& grammar) const;
-	void Visit(void*, const grammar::LG& grammar) const;
-	void Visit(void*, const grammar::CFG& grammar) const;
-	void Visit(void*, const grammar::EpsilonFreeCFG& grammar) const;
-	void Visit(void*, const grammar::CNF& grammar) const;
-	void Visit(void*, const grammar::GNF& grammar) const;
-	void Visit(void*, const grammar::CSG& grammar) const;
-	void Visit(void*, const grammar::NonContractingGrammar& grammar) const;
-	void Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar& grammar) const;
-	void Visit(void*, const grammar::UnrestrictedGrammar& grammar) const;
 
 	static const ToRegExp TO_REG_EXP;
 };
diff --git a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h
index 3370fc3dfd..ff75ab962b 100644
--- a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h
+++ b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h
@@ -2,7 +2,7 @@
  * ToRegExpAlgebraic.h
  *
  *  Created on: 4. 3. 2014
- *      Author: Tomas Pecka
+ *	  Author: Tomas Pecka
  */
 
 #ifndef GRAMMAR_TO_REG_EXP_ALGEBRAIC_H_
@@ -21,22 +21,26 @@ namespace convert {
 class ToRegExpAlgebraic : public grammar::VisitableConstRGBase
 {
 public:
-    /**
-     * @return regexp equivalent to source right regular grammar.
-     * @param grammar Grammar to convert
-     */
-    static regexp::RegExp convert(const grammar::Grammar& grammar);
+	ToRegExpAlgebraic() {}
 
-    static regexp::RegExp convert(const grammar::RightRG& grammar);
-    static regexp::RegExp convert(const grammar::LeftRG& grammar);
+	/**
+	 * @return regexp equivalent to source right regular grammar.
+	 * @param grammar Grammar to convert
+	 */
+	static regexp::RegExp convert(const grammar::Grammar& grammar);
+
+	static regexp::RegExp convert(const grammar::RightRG& grammar);
+	static regexp::RegExp convert(const grammar::LeftRG& grammar);
 
 protected:
-    void Visit(void*, const grammar::RightRG& grammar) const;
-    void Visit(void*, const grammar::LeftRG& grammar) const;
-    void Visit(void*, const grammar::RightLG& grammar) const;
-    void Visit(void*, const grammar::LeftLG& grammar) const;
+	using grammar::VisitableConstRGBase::Visit;
+
+	void Visit(void*, const grammar::RightRG& grammar) const;
+	void Visit(void*, const grammar::LeftRG& grammar) const;
+	void Visit(void*, const grammar::RightLG& grammar) const;
+	void Visit(void*, const grammar::LeftLG& grammar) const;
 
-    static const ToRegExpAlgebraic TO_REG_EXP_ALGEBRAIC;
+	static const ToRegExpAlgebraic TO_REG_EXP_ALGEBRAIC;
 };
 
 } /* namespace covert */
diff --git a/alib2algo/src/grammar/generate/GenerateUpToLength.h b/alib2algo/src/grammar/generate/GenerateUpToLength.h
index 4b89f67fbf..26b2d1fc8b 100644
--- a/alib2algo/src/grammar/generate/GenerateUpToLength.h
+++ b/alib2algo/src/grammar/generate/GenerateUpToLength.h
@@ -21,6 +21,8 @@ namespace generate {
  */
 class GenerateUpToLength : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	GenerateUpToLength() {}
+
 	static std::set<string::LinearString> generate( const grammar::Grammar & grammar, unsigned length );
 
 	template<class T>
diff --git a/alib2algo/src/grammar/properties/IsLanguageEmpty.h b/alib2algo/src/grammar/properties/IsLanguageEmpty.h
index ccfd0b6004..0921e4f4ad 100644
--- a/alib2algo/src/grammar/properties/IsLanguageEmpty.h
+++ b/alib2algo/src/grammar/properties/IsLanguageEmpty.h
@@ -19,6 +19,8 @@ namespace properties {
  */
 class IsLanguageEmpty : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	IsLanguageEmpty() {}
+
 	static bool isLanguageEmpty( const grammar::Grammar & grammar );
 
 	/*
diff --git a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h
index 0eb20a7505..ef87b98b7c 100644
--- a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h
+++ b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h
@@ -19,6 +19,8 @@ namespace properties {
  */
 class IsLanguageGeneratingEpsilon : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	IsLanguageGeneratingEpsilon() {}
+
 	static bool isLanguageGeneratingEpsilon( const grammar::Grammar & grammar );
 
 	/*
diff --git a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h
index 0d64caae30..c5802dc48d 100644
--- a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h
+++ b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h
@@ -20,6 +20,8 @@ namespace properties {
  */
 class NonterminalUnitRuleCycle : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	NonterminalUnitRuleCycle() {}
+
 	static std::set<alphabet::Symbol> getNonterminalUnitRuleCycle( const grammar::Grammar & grammar, const alphabet::Symbol& nonterminal );
 
 	/**
diff --git a/alib2algo/src/grammar/properties/NullableNonterminals.h b/alib2algo/src/grammar/properties/NullableNonterminals.h
index 7c55b69614..85e47beb54 100644
--- a/alib2algo/src/grammar/properties/NullableNonterminals.h
+++ b/alib2algo/src/grammar/properties/NullableNonterminals.h
@@ -20,6 +20,8 @@ namespace properties {
  */
 class NullableNonterminals : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	NullableNonterminals() {}
+
 	static std::set<alphabet::Symbol> getNullableNonterminals( const grammar::Grammar & grammar );
 
 	/**
diff --git a/alib2algo/src/grammar/properties/ProductiveNonterminals.h b/alib2algo/src/grammar/properties/ProductiveNonterminals.h
index 317b51cd28..688c011f06 100644
--- a/alib2algo/src/grammar/properties/ProductiveNonterminals.h
+++ b/alib2algo/src/grammar/properties/ProductiveNonterminals.h
@@ -20,6 +20,8 @@ namespace properties {
  */
 class ProductiveNonterminals : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	ProductiveNonterminals() {}
+
 	static std::set<alphabet::Symbol> getProductiveNonterminals( const grammar::Grammar & grammar );
 
 	/**
diff --git a/alib2algo/src/grammar/properties/UnreachableSymbols.h b/alib2algo/src/grammar/properties/UnreachableSymbols.h
index 3c9bbf976d..a77f3421e2 100644
--- a/alib2algo/src/grammar/properties/UnreachableSymbols.h
+++ b/alib2algo/src/grammar/properties/UnreachableSymbols.h
@@ -20,6 +20,8 @@ namespace properties {
  */
 class UnreachableSymbols : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	UnreachableSymbols() {}
+
 	static std::set<alphabet::Symbol> getUnreachableSymbols( const grammar::Grammar & grammar );
 
 	/**
diff --git a/alib2algo/src/grammar/simplify/EpsilonRemover.h b/alib2algo/src/grammar/simplify/EpsilonRemover.h
index e67dae4143..dd4a59cfdb 100644
--- a/alib2algo/src/grammar/simplify/EpsilonRemover.h
+++ b/alib2algo/src/grammar/simplify/EpsilonRemover.h
@@ -30,6 +30,8 @@ namespace simplify {
 
 class EpsilonRemover : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	EpsilonRemover() {}
+
 	static grammar::Grammar remove( const grammar::Grammar & grammar );
 
 	static grammar::EpsilonFreeCFG remove( const grammar::CFG & grammar );
diff --git a/alib2algo/src/grammar/simplify/LeftRecursionRemover.h b/alib2algo/src/grammar/simplify/LeftRecursionRemover.h
index f4877c9bb6..9b21ec1645 100644
--- a/alib2algo/src/grammar/simplify/LeftRecursionRemover.h
+++ b/alib2algo/src/grammar/simplify/LeftRecursionRemover.h
@@ -30,6 +30,8 @@ namespace simplify {
 
 class LeftRecursionRemover : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	LeftRecursionRemover() {}
+
 	static grammar::Grammar remove( const grammar::Grammar & grammar );
 
 	static grammar::EpsilonFreeCFG remove( const grammar::EpsilonFreeCFG & grammar );
diff --git a/alib2algo/src/grammar/simplify/SimpleRulesRemover.h b/alib2algo/src/grammar/simplify/SimpleRulesRemover.h
index 05c1fa88e4..0f29d0c0d0 100644
--- a/alib2algo/src/grammar/simplify/SimpleRulesRemover.h
+++ b/alib2algo/src/grammar/simplify/SimpleRulesRemover.h
@@ -30,6 +30,8 @@ namespace simplify {
 
 class SimpleRulesRemover : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	SimpleRulesRemover() {}
+
 	static grammar::Grammar remove( const grammar::Grammar & grammar );
 
 	static grammar::CFG remove( const grammar::CFG & grammar );
diff --git a/alib2algo/src/grammar/simplify/ToCNF.h b/alib2algo/src/grammar/simplify/ToCNF.h
index 485a076e16..55f85daa8a 100644
--- a/alib2algo/src/grammar/simplify/ToCNF.h
+++ b/alib2algo/src/grammar/simplify/ToCNF.h
@@ -30,6 +30,8 @@ namespace simplify {
 
 class ToCNF : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	ToCNF() {}
+
 	static grammar::Grammar convert( const grammar::Grammar & grammar );
 
 	static grammar::CNF convert( const grammar::CFG & grammar );
diff --git a/alib2algo/src/grammar/simplify/ToGNF.cpp b/alib2algo/src/grammar/simplify/ToGNF.cpp
index 71b34b7e17..6507b2f5e9 100644
--- a/alib2algo/src/grammar/simplify/ToGNF.cpp
+++ b/alib2algo/src/grammar/simplify/ToGNF.cpp
@@ -14,8 +14,6 @@
 #include "alphabet/LabeledSymbol.h"
 #include "alphabet/SymbolPairSymbol.h"
 
-#include <factory/StringDataFactory.hpp>
-
 namespace grammar {
 
 namespace simplify {
diff --git a/alib2algo/src/grammar/simplify/ToGNF.h b/alib2algo/src/grammar/simplify/ToGNF.h
index 87d9f30a20..764b4a6919 100644
--- a/alib2algo/src/grammar/simplify/ToGNF.h
+++ b/alib2algo/src/grammar/simplify/ToGNF.h
@@ -30,6 +30,8 @@ namespace simplify {
 
 class ToGNF : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	ToGNF() {}
+
 	static grammar::Grammar convert( const grammar::Grammar & grammar );
 
 	static grammar::GNF convert( const grammar::CFG & grammar );
diff --git a/alib2algo/src/grammar/simplify/Trim.h b/alib2algo/src/grammar/simplify/Trim.h
index 25cb46cdd3..2c288411ed 100644
--- a/alib2algo/src/grammar/simplify/Trim.h
+++ b/alib2algo/src/grammar/simplify/Trim.h
@@ -19,6 +19,8 @@ namespace simplify {
  */
 class Trim : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	Trim() {}
+
 	static grammar::Grammar trim( const grammar::Grammar & grammar );
 
 	/**
diff --git a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h
index de8a17830e..d821b30863 100644
--- a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h
+++ b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h
@@ -25,6 +25,8 @@ namespace simplify {
  */
 class UnproductiveSymbolsRemover : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	UnproductiveSymbolsRemover() {}
+
 	static grammar::Grammar remove( const grammar::Grammar & automaton );
 
 	/**
diff --git a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h
index 1144d510cc..18ef5dc502 100644
--- a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h
+++ b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h
@@ -25,6 +25,8 @@ namespace simplify {
  */
 class UnreachableSymbolsRemover : public grammar::VisitableGrammarBase::const_visitor_type {
 public:
+	UnreachableSymbolsRemover() {}
+
 	static grammar::Grammar remove( const grammar::Grammar & automaton );
 
 	/*
diff --git a/alib2algo/src/graph/shortestpath/BellmanFord.h b/alib2algo/src/graph/shortestpath/BellmanFord.h
index 1c117f6a40..730175966d 100644
--- a/alib2algo/src/graph/shortestpath/BellmanFord.h
+++ b/alib2algo/src/graph/shortestpath/BellmanFord.h
@@ -21,6 +21,8 @@ namespace shortestpath
 class BellmanFord : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	BellmanFord() {}
+
 	typedef std::unordered_map<Node, int> Result;
 
 	static Result bellmanford(const Graph &graph, const Node &start);
diff --git a/alib2algo/src/graph/shortestpath/Dijkstra.h b/alib2algo/src/graph/shortestpath/Dijkstra.h
index d9373e3ca3..52cf36902b 100644
--- a/alib2algo/src/graph/shortestpath/Dijkstra.h
+++ b/alib2algo/src/graph/shortestpath/Dijkstra.h
@@ -18,6 +18,8 @@ namespace shortestpath
 class Dijkstra : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	Dijkstra() {}
+
 	typedef std::unordered_map<Node, int> Result;
 
 	static Result dijkstra(const Graph &graph, const Node &start);
diff --git a/alib2algo/src/graph/shortestpath/FloydWarshall.h b/alib2algo/src/graph/shortestpath/FloydWarshall.h
index f9a7ab1855..bbc16ca708 100644
--- a/alib2algo/src/graph/shortestpath/FloydWarshall.h
+++ b/alib2algo/src/graph/shortestpath/FloydWarshall.h
@@ -22,6 +22,8 @@ namespace shortestpath
 class FloydWarshall : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	FloydWarshall() {}
+
 	typedef std::unordered_map<Node, std::unordered_map<Node, int>> Result;
 
 	static Result floydwarshall(const Graph &graph);
diff --git a/alib2algo/src/graph/sort/TopologicalSort.h b/alib2algo/src/graph/sort/TopologicalSort.h
index ec30472bc7..b746cb2bd5 100644
--- a/alib2algo/src/graph/sort/TopologicalSort.h
+++ b/alib2algo/src/graph/sort/TopologicalSort.h
@@ -16,6 +16,8 @@ namespace sort
 class TopologicalSort : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	TopologicalSort() {}
+
 	typedef std::list<Node> Result;
 
 	static Result topologicalsort(const Graph &graph);
diff --git a/alib2algo/src/graph/spanningtree/JarnikPrim.h b/alib2algo/src/graph/spanningtree/JarnikPrim.h
index cf1273514f..8b8d11e24b 100644
--- a/alib2algo/src/graph/spanningtree/JarnikPrim.h
+++ b/alib2algo/src/graph/spanningtree/JarnikPrim.h
@@ -14,6 +14,8 @@ namespace spanningtree
 class JarnikPrim : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	JarnikPrim() {}
+
 	static Graph jarnikprim(const Graph &graph, const Node &start);
 
 	static UndirectedGraph jarnikprim(const UndirectedGraph &graph, const Node &start);
diff --git a/alib2algo/src/graph/traverse/Bfs.h b/alib2algo/src/graph/traverse/Bfs.h
index f4a468bfe9..c180b1a323 100644
--- a/alib2algo/src/graph/traverse/Bfs.h
+++ b/alib2algo/src/graph/traverse/Bfs.h
@@ -19,6 +19,8 @@ namespace traverse
 class Bfs : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	Bfs() {}
+
 	typedef std::function<bool(const Node&)> Function;
 	typedef std::function<bool(const Node&, const Node&, int)> FunctionExt;
 
diff --git a/alib2algo/src/graph/traverse/Dfs.h b/alib2algo/src/graph/traverse/Dfs.h
index 7f068d4d3b..532b53ba9d 100644
--- a/alib2algo/src/graph/traverse/Dfs.h
+++ b/alib2algo/src/graph/traverse/Dfs.h
@@ -19,6 +19,8 @@ namespace traverse
 class Dfs : public graph::VisitableGraphBase::const_visitor_type
 {
 public:
+	Dfs() {}
+
 	typedef std::function<bool(const Node&)> Function;
 	typedef std::function<bool(const Node&, const Node&, int, int)> FunctionExt;
 
diff --git a/alib2algo/src/regexp/GlushkovSymbol.cpp b/alib2algo/src/regexp/GlushkovSymbol.cpp
index eebd332357..0be8280ad5 100644
--- a/alib2algo/src/regexp/GlushkovSymbol.cpp
+++ b/alib2algo/src/regexp/GlushkovSymbol.cpp
@@ -7,9 +7,6 @@
 
 #include "GlushkovSymbol.h"
 
-using namespace alphabet;
-using namespace regexp;
-
 namespace regexp
 {
 
@@ -29,9 +26,9 @@ int GlushkovSymbol::getId( void ) const
 	return m_i;
 }
 
-Symbol GlushkovSymbol::getInputSymbol( void ) const
+alphabet::Symbol GlushkovSymbol::getInputSymbol( void ) const
 {
-	return Symbol( m_regexpSymbol->getSymbol( ) );
+	return alphabet::Symbol( m_regexpSymbol->getSymbol( ) );
 }
 
 regexp::UnboundedRegExpSymbol const * GlushkovSymbol::getSymbolPtr( void ) const
diff --git a/alib2algo/src/regexp/GlushkovTraversal.cpp b/alib2algo/src/regexp/GlushkovTraversal.cpp
index 07060c8d35..fa7c5bec08 100644
--- a/alib2algo/src/regexp/GlushkovTraversal.cpp
+++ b/alib2algo/src/regexp/GlushkovTraversal.cpp
@@ -9,10 +9,6 @@
 
 #include "properties/RegExpEpsilon.h"
 
-using namespace alib;
-using namespace regexp;
-using namespace std;
-
 namespace regexp
 {
 
@@ -33,9 +29,9 @@ bool GlushkovTraversal::pos( GlushkovSymbol const& symbol, regexp::UnboundedRegE
 	return pos( & node->getRegExp(), symbol.getSymbolPtr( ) );
 }
 
-set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re )
+std::set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re )
 {
-	set<GlushkovSymbol> firstSet, symbolSet = getSymbols( re );
+	std::set<GlushkovSymbol> firstSet, symbolSet = getSymbols( re );
 
 	for( auto const& s : first( & re.getRegExp() ) )
 		firstSet.insert( findSymbol( s, symbolSet ) );
@@ -43,9 +39,9 @@ set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re
 	return firstSet;
 }
 
-set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re )
+std::set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re )
 {
-	set<GlushkovSymbol> lastSet, symbolSet = getSymbols( re );
+	std::set<GlushkovSymbol> lastSet, symbolSet = getSymbols( re );
 
 	for( auto const& s : last( & re.getRegExp() ) )
 		lastSet.insert( findSymbol( s, symbolSet ) );
@@ -53,9 +49,9 @@ set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re )
 	return lastSet;
 }
 
-set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re, GlushkovSymbol const& symbol )
+std::set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re, GlushkovSymbol const& symbol )
 {
-	set<GlushkovSymbol> followSet, symbolSet = getSymbols( re );
+	std::set<GlushkovSymbol> followSet, symbolSet = getSymbols( re );
 
 	for( auto const& s: follow( & re.getRegExp(), symbol.getSymbolPtr( ) ) )
 		followSet.insert( findSymbol( s, symbolSet ) );
@@ -65,7 +61,7 @@ set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re
 
 // -----------------------------------------------------------------------------
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpElement const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpElement const * const & node )
 {
 	regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node );
 	regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node );
@@ -90,9 +86,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb
 	throw exception::AlibException( "GlushkovTraversal::first - invalid RegExpElement node" );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpAlternation const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpAlternation const * const & node )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
+	std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
 
 	for( auto const& element : node->getElements( ) )
 	{
@@ -103,9 +99,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpConcatenation const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpConcatenation const * const & node )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
+	std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
 
 	for( auto const& element : node->getElements( ) )
 	{
@@ -119,29 +115,29 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpIteration const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpIteration const * const & node )
 {
 	return first( & node->getElement( ) );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpSymbol const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpSymbol const * const & node )
 {
-	return set<regexp::UnboundedRegExpSymbol const *> { node };
+	return std::set<regexp::UnboundedRegExpSymbol const *> { node };
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEpsilon const * const & /* node */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEpsilon const * const & /* node */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEmpty const * const &  /* node */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEmpty const * const &  /* node */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
 // ----------------------------------------------------------------------------
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpElement const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpElement const * const & node )
 {
 	regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node );
 	regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node );
@@ -166,22 +162,22 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::Unbo
 	 throw exception::AlibException( "GlushkovTraversal::last - invalid RegExpElement node" );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpAlternation const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpAlternation const * const & node )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret;
+	std::set<regexp::UnboundedRegExpSymbol const *> ret;
 
 	for( auto const& element : node->getElements( ) )
 	{
-		set<regexp::UnboundedRegExpSymbol const *> tmp = last( element );
+		std::set<regexp::UnboundedRegExpSymbol const *> tmp = last( element );
 		ret.insert( tmp.begin( ), tmp.end( ) );
 	}
 
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpConcatenation const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpConcatenation const * const & node )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
+	std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp;
 
 	for( auto it = node->getElements( ).rbegin( ); it != node->getElements( ).rend( ) ; it ++ )
 	{
@@ -195,29 +191,29 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::Unbo
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpIteration const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpIteration const * const & node )
 {
 	return last( & node->getElement( ) );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpSymbol const * const & node )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpSymbol const * const & node )
 {
-	return set<regexp::UnboundedRegExpSymbol const *> { node };
+	return std::set<regexp::UnboundedRegExpSymbol const *> { node };
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEpsilon const * const & /* node */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEpsilon const * const & /* node */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEmpty const * const & /* node */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEmpty const * const & /* node */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
 // ----------------------------------------------------------------------------
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpElement const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpElement const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
 {
 	regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node );
 	regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node );
@@ -247,7 +243,7 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un
 	throw exception::AlibException( "GlushkovTraversal::follow() - unknown RegExpElement node" );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpAlternation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpAlternation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
 {
 	for( auto const& element : node->getElements( ) )
 		if( pos( element, symbolptr ) )
@@ -256,9 +252,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un
 	throw exception::AlibException( "GlushkovTraversal::follow(Alt)" );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpConcatenation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpConcatenation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret, tmp, lastSet;
+	std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp, lastSet;
 
 	for( auto e = node->getElements( ).begin( ); e != node->getElements( ).end( ); e ++ )
 	{
@@ -284,33 +280,33 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpIteration const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpIteration const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr )
 {
-	set<regexp::UnboundedRegExpSymbol const *> ret = follow( & node->getElement( ), symbolptr );
-	set<regexp::UnboundedRegExpSymbol const *> lastSet = last( & node->getElement( ) );
+	std::set<regexp::UnboundedRegExpSymbol const *> ret = follow( & node->getElement( ), symbolptr );
+	std::set<regexp::UnboundedRegExpSymbol const *> lastSet = last( & node->getElement( ) );
 
 	if( isInSet( symbolptr, lastSet ) )
 	{
-		set<regexp::UnboundedRegExpSymbol const *> firstSet = first( & node->getElement( ) );
+		std::set<regexp::UnboundedRegExpSymbol const *> firstSet = first( & node->getElement( ) );
 		ret.insert( firstSet.begin( ), firstSet.end( ) );
 	}
 
 	return ret;
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpSymbol const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpSymbol const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEmpty const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEmpty const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
-set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEpsilon const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
+std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEpsilon const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ )
 {
-	return set<regexp::UnboundedRegExpSymbol const *>( );
+	return std::set<regexp::UnboundedRegExpSymbol const *>( );
 }
 
 // ----------------------------------------------------------------------------
@@ -383,9 +379,9 @@ bool GlushkovTraversal::pos( regexp::UnboundedRegExpEpsilon const * const & /* n
 
 // ----------------------------------------------------------------------------
 
-set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const& re )
+std::set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const& re )
 {
-	set<GlushkovSymbol> alphabet;
+	std::set<GlushkovSymbol> alphabet;
 	int i = 1;
 
 	getSymbols( & re.getRegExp( ), alphabet, i );
@@ -393,7 +389,7 @@ set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const
 	return alphabet;
 }
 
-void GlushkovTraversal::getSymbols( regexp::UnboundedRegExpElement const * const & node, set<GlushkovSymbol> & alphabet, int & i )
+void GlushkovTraversal::getSymbols( regexp::UnboundedRegExpElement const * const & node, std::set<GlushkovSymbol> & alphabet, int & i )
 {
 	regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node );
 	regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node );
diff --git a/alib2algo/src/regexp/convert/ToAutomaton.h b/alib2algo/src/regexp/convert/ToAutomaton.h
index 9894aff997..9e52611d37 100644
--- a/alib2algo/src/regexp/convert/ToAutomaton.h
+++ b/alib2algo/src/regexp/convert/ToAutomaton.h
@@ -22,6 +22,8 @@ namespace convert {
 class ToAutomaton : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return FSM equivalent to original regular expression.
diff --git a/alib2algo/src/regexp/convert/ToAutomatonDerivation.h b/alib2algo/src/regexp/convert/ToAutomatonDerivation.h
index 7b26ff65f4..2c25d32cc1 100644
--- a/alib2algo/src/regexp/convert/ToAutomatonDerivation.h
+++ b/alib2algo/src/regexp/convert/ToAutomatonDerivation.h
@@ -26,6 +26,8 @@ namespace convert {
 class ToAutomatonDerivation : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToAutomatonDerivation() {}
+
 	/**
 	 * Performs conversion.
 	 * @return FSM equivalent to original regular expression.
diff --git a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h
index edf737ad00..e916394f7b 100644
--- a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h
+++ b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h
@@ -26,6 +26,8 @@ namespace convert {
 class ToAutomatonGlushkov : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToAutomatonGlushkov() {}
+
 	/**
 	 * Performs conversion.
 	 * @param re Original regular expression.
diff --git a/alib2algo/src/regexp/convert/ToAutomatonThompson.h b/alib2algo/src/regexp/convert/ToAutomatonThompson.h
index e2608c9b1c..1c33e992e0 100644
--- a/alib2algo/src/regexp/convert/ToAutomatonThompson.h
+++ b/alib2algo/src/regexp/convert/ToAutomatonThompson.h
@@ -29,6 +29,8 @@ namespace convert {
 class ToAutomatonThompson : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type
 {
 public:
+	ToAutomatonThompson() {}
+
 	/**
 	 * Performs conversion.
 	 * @param regexp regexp to convert
diff --git a/alib2algo/src/regexp/convert/ToGrammar.h b/alib2algo/src/regexp/convert/ToGrammar.h
index de8438c541..02536f818d 100644
--- a/alib2algo/src/regexp/convert/ToGrammar.h
+++ b/alib2algo/src/regexp/convert/ToGrammar.h
@@ -18,6 +18,8 @@ namespace convert {
 class ToGrammar : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToGrammar() {}
+
 	/**
 	 * Performs conversion.
 	 * @return right regular grammar equivalent to source regexp.
diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h
index 4027f71691..349d490350 100644
--- a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h
+++ b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h
@@ -24,6 +24,8 @@ namespace convert {
 class ToGrammarRightRGDerivation : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToGrammarRightRGDerivation() {}
+
 	/**
 	 * Performs conversion.
 	 * @return right regular grammar equivalent to source regexp.
diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h
index 7eec5a0307..2d03c778aa 100644
--- a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h
+++ b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h
@@ -26,6 +26,8 @@ namespace convert {
 class ToGrammarRightRGGlushkov : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	ToGrammarRightRGGlushkov() {}
+
 	/**
 	 * Performs conversion.
 	 * @param regexp original regular expression
diff --git a/alib2algo/src/regexp/properties/RegExpEmpty.h b/alib2algo/src/regexp/properties/RegExpEmpty.h
index d76fa5fac3..4b68a96832 100644
--- a/alib2algo/src/regexp/properties/RegExpEmpty.h
+++ b/alib2algo/src/regexp/properties/RegExpEmpty.h
@@ -23,6 +23,8 @@ namespace properties {
 class RegExpEmpty : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type
 {
 public:
+	RegExpEmpty() {}
+
 	static bool languageIsEmpty(const regexp::RegExp& regexp);
 
 	static bool languageIsEmpty(const regexp::FormalRegExp& regexp);
diff --git a/alib2algo/src/regexp/properties/RegExpEpsilon.h b/alib2algo/src/regexp/properties/RegExpEpsilon.h
index c5ba4793b8..8b2da94bba 100644
--- a/alib2algo/src/regexp/properties/RegExpEpsilon.h
+++ b/alib2algo/src/regexp/properties/RegExpEpsilon.h
@@ -18,12 +18,13 @@ namespace properties {
 
 /**
  * Checks, whether regexp (or its subtree) describes epsilon (empty string).
- * TODO: Better API?
  *
  */
 class RegExpEpsilon : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type
 {
 public:
+	RegExpEpsilon() {}
+
 	static bool languageContainsEpsilon(const regexp::RegExp& regexp);
 
 	static bool languageContainsEpsilon(const regexp::FormalRegExp& regexp);
diff --git a/alib2algo/src/regexp/simplify/RegExpOptimize.h b/alib2algo/src/regexp/simplify/RegExpOptimize.h
index 3c1b3d2182..db510610f9 100644
--- a/alib2algo/src/regexp/simplify/RegExpOptimize.h
+++ b/alib2algo/src/regexp/simplify/RegExpOptimize.h
@@ -64,6 +64,8 @@ namespace simplify {
 class RegExpOptimize : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	RegExpOptimize() {}
+
 	static regexp::RegExp optimize( const regexp::RegExp & regexp );
 
 	static regexp::UnboundedRegExp optimize( const regexp::UnboundedRegExp & regexp );
diff --git a/alib2algo/src/regexp/transform/RegExpAlternate.h b/alib2algo/src/regexp/transform/RegExpAlternate.h
index bb6b3b91ed..21dbc77657 100644
--- a/alib2algo/src/regexp/transform/RegExpAlternate.h
+++ b/alib2algo/src/regexp/transform/RegExpAlternate.h
@@ -22,6 +22,8 @@ namespace regexp
 class RegExpAlternate : public regexp::VisitableRegExpBase::const_promoting_visitor_type
 {
 public:
+	RegExpAlternate() {}
+
 	static regexp::RegExp alternate(const regexp::RegExp& first, const regexp::RegExp& second);
 
 	static regexp::FormalRegExp alternate(const regexp::FormalRegExp& first, const regexp::FormalRegExp& second);
diff --git a/alib2algo/src/regexp/transform/RegExpConcatenate.h b/alib2algo/src/regexp/transform/RegExpConcatenate.h
index 01c4810ab8..2f025b7058 100644
--- a/alib2algo/src/regexp/transform/RegExpConcatenate.h
+++ b/alib2algo/src/regexp/transform/RegExpConcatenate.h
@@ -22,6 +22,8 @@ namespace regexp
 class RegExpConcatenate : public regexp::VisitableRegExpBase::const_promoting_visitor_type
 {
 public:
+	RegExpConcatenate() {}
+
 	static regexp::RegExp concatenate(const regexp::RegExp& first, const regexp::RegExp& second);
 
 	static regexp::FormalRegExp concatenate(const regexp::FormalRegExp& first, const regexp::FormalRegExp& second);
diff --git a/alib2algo/src/regexp/transform/RegExpDerivation.h b/alib2algo/src/regexp/transform/RegExpDerivation.h
index d7402ceec1..9e578c2504 100644
--- a/alib2algo/src/regexp/transform/RegExpDerivation.h
+++ b/alib2algo/src/regexp/transform/RegExpDerivation.h
@@ -27,6 +27,8 @@ namespace regexp
 class RegExpDerivation : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type
 {
 public:
+	RegExpDerivation() {}
+
 	/**
 	 * @param regexp RegExp to derivate
 	 * @param string String to derivate given RegExp over
diff --git a/alib2algo/src/regexp/transform/RegExpIntegral.h b/alib2algo/src/regexp/transform/RegExpIntegral.h
index 1f8d6ffc2a..e86206b37a 100644
--- a/alib2algo/src/regexp/transform/RegExpIntegral.h
+++ b/alib2algo/src/regexp/transform/RegExpIntegral.h
@@ -24,6 +24,8 @@ namespace regexp
 class RegExpIntegral : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type
 {
 public:
+	RegExpIntegral() {}
+
 	/**
 	 * @param regexp RegExp to integrate
 	 * @param string String to integrate given RegExp over
diff --git a/alib2algo/src/regexp/transform/RegExpIterate.h b/alib2algo/src/regexp/transform/RegExpIterate.h
index df65d580db..b313cd0db2 100644
--- a/alib2algo/src/regexp/transform/RegExpIterate.h
+++ b/alib2algo/src/regexp/transform/RegExpIterate.h
@@ -22,6 +22,8 @@ namespace regexp
 class RegExpIterate : public regexp::VisitableRegExpBase::const_visitor_type
 {
 public:
+	RegExpIterate() {}
+
 	static regexp::RegExp iterate(const regexp::RegExp& regexp);
 
 	static regexp::FormalRegExp iterate(const regexp::FormalRegExp& regexp);
diff --git a/alib2algo/src/string/naive/ExactCompare.h b/alib2algo/src/string/naive/ExactCompare.h
index 3e6cdc880b..ada478f2da 100644
--- a/alib2algo/src/string/naive/ExactCompare.h
+++ b/alib2algo/src/string/naive/ExactCompare.h
@@ -16,6 +16,8 @@ namespace naive {
 
 class ExactCompare : public string::VisitableStringBase::const_promoting_visitor_type {
 public:
+	ExactCompare() {}
+
 	static int compare(const string::String& u, const string::String& v);
 
 	static int compare(const string::Epsilon& u, const string::Epsilon& v);
diff --git a/alib2algo/src/string/naive/ExactEqual.h b/alib2algo/src/string/naive/ExactEqual.h
index b131b5fdaf..e0490504fd 100644
--- a/alib2algo/src/string/naive/ExactEqual.h
+++ b/alib2algo/src/string/naive/ExactEqual.h
@@ -16,6 +16,8 @@ namespace naive {
 
 class ExactEqual : public string::VisitableStringBase::const_promoting_visitor_type {
 public:
+	ExactEqual() {}
+
 	static bool equals(const string::String& u, const string::String& v);
 	
 	static bool equals(const string::Epsilon& u, const string::Epsilon& v);
diff --git a/alib2algo/src/string/simplify/NormalizeAlphabet.h b/alib2algo/src/string/simplify/NormalizeAlphabet.h
index 3452bf8e57..ae869d9fa4 100644
--- a/alib2algo/src/string/simplify/NormalizeAlphabet.h
+++ b/alib2algo/src/string/simplify/NormalizeAlphabet.h
@@ -17,6 +17,8 @@ namespace simplify {
 
 class NormalizeAlphabet : public string::VisitableStringBase::const_visitor_type {
 public:
+	NormalizeAlphabet() {}
+
 	/**
 	 * @param dfa automaton to normalize
 	 */
diff --git a/alib2algo/src/string/simplify/NormalizeRotation.h b/alib2algo/src/string/simplify/NormalizeRotation.h
index d280a9feeb..097d4bbbd5 100644
--- a/alib2algo/src/string/simplify/NormalizeRotation.h
+++ b/alib2algo/src/string/simplify/NormalizeRotation.h
@@ -17,6 +17,8 @@ namespace simplify {
 
 class NormalizeRotation : public string::VisitableStringBase::const_visitor_type {
 public:
+	NormalizeRotation() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/BorderArray.h b/alib2algo/src/stringology/exact/BorderArray.h
index c1283cbefa..348a759971 100644
--- a/alib2algo/src/stringology/exact/BorderArray.h
+++ b/alib2algo/src/stringology/exact/BorderArray.h
@@ -17,6 +17,8 @@ namespace exact {
 
 class BorderArray : public string::VisitableStringBase::const_visitor_type {
 public:
+	BorderArray() {}
+
 	/**
 	 * Computes border array of string
 	 * @param string string to compute border array for
diff --git a/alib2algo/src/stringology/exact/BoyerMooreHorspool.h b/alib2algo/src/stringology/exact/BoyerMooreHorspool.h
index e42f44b3e1..b009922e15 100644
--- a/alib2algo/src/stringology/exact/BoyerMooreHorspool.h
+++ b/alib2algo/src/stringology/exact/BoyerMooreHorspool.h
@@ -20,6 +20,8 @@ namespace exact {
  */
 class BoyerMooreHorspool : public string::VisitableStringBase::const_same_visitor_type {
 public:
+	BoyerMooreHorspool() {}
+
 	/**
 	 * Search for pattern in linear string.
 	 * @return set set of occurences
diff --git a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h b/alib2algo/src/stringology/exact/ExactFactorAutomaton.h
index b4957b220e..d5549a32e8 100644
--- a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h
+++ b/alib2algo/src/stringology/exact/ExactFactorAutomaton.h
@@ -19,6 +19,8 @@ namespace exact {
 
 class ExactFactorAutomaton : public string::VisitableStringBase::const_visitor_type {
 public:
+	ExactFactorAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/ExactMatch.h b/alib2algo/src/stringology/exact/ExactMatch.h
index 26e95dc0bf..faf97daecc 100644
--- a/alib2algo/src/stringology/exact/ExactMatch.h
+++ b/alib2algo/src/stringology/exact/ExactMatch.h
@@ -16,6 +16,8 @@ namespace exact {
 
 class ExactMatch : public string::VisitableStringBase::const_promoting_visitor_type {
 public:
+	ExactMatch() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h b/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h
index 53087d50ce..d2fc0ef8c1 100644
--- a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h
+++ b/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h
@@ -19,6 +19,8 @@ namespace exact {
 
 class ExactMatchingAutomaton : public string::VisitableStringBase::const_visitor_type {
 public:
+	ExactMatchingAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h
index eec9e5c0d4..17b021b8da 100644
--- a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h
+++ b/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h
@@ -19,6 +19,8 @@ namespace exact {
 
 class ExactMultiNondeterministicSubsequenceAutomaton {
 public:
+	ExactMultiNondeterministicSubsequenceAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h
index d96b6ded3c..40fccb82eb 100644
--- a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h
+++ b/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h
@@ -19,6 +19,8 @@ namespace exact {
 
 class ExactNondeterministicSubsequenceAutomaton : public string::VisitableStringBase::const_visitor_type {
 public:
+	ExactNondeterministicSubsequenceAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h
index 0cc61c8b19..0da0b1d86b 100644
--- a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h
+++ b/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h
@@ -19,6 +19,8 @@ namespace exact {
 
 class ExactSubsequenceAutomaton : public string::VisitableStringBase::const_visitor_type {
 public:
+	ExactSubsequenceAutomaton() {}
+
 	/**
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h
index 6ce99dfa05..ebcfc1846a 100644
--- a/alib2data/src/automaton/AutomatonBase.h
+++ b/alib2data/src/automaton/AutomatonBase.h
@@ -33,7 +33,7 @@ public:
 };
 
 class VisitableConstFSMBase : public VisitableAutomatonBase::const_visitor_type {
-
+public:
 	using VisitableAutomatonBase::const_visitor_type::Visit;
 
 	void Visit(void*, const NFTA&) const {
@@ -90,7 +90,7 @@ class VisitableConstFSMBase : public VisitableAutomatonBase::const_visitor_type
 };
 
 class VisitableConstPDABase : public VisitableAutomatonBase::const_visitor_type {
-
+public:
 	using VisitableAutomatonBase::const_visitor_type::Visit;
 
 	void Visit(void*, const NFTA&) const {
@@ -132,7 +132,7 @@ class VisitableConstPDABase : public VisitableAutomatonBase::const_visitor_type
 };
 
 class VisitableConstNondeterministicAutomatonBase : public VisitableAutomatonBase::const_visitor_type {
-
+public:
 	using VisitableAutomatonBase::const_visitor_type::Visit;
 
 	void Visit(void*, const DFTA&) const {
@@ -169,7 +169,7 @@ class VisitableConstNondeterministicAutomatonBase : public VisitableAutomatonBas
 };
 
 class VisitableConstDeterministicAutomatonBase : public VisitableAutomatonBase::const_visitor_type {
-
+public:
 	using VisitableAutomatonBase::const_visitor_type::Visit;
 
 	void Visit(void*, const NFTA&) const {
diff --git a/alib2data/src/grammar/GrammarBase.h b/alib2data/src/grammar/GrammarBase.h
index 74018b7af9..9dc7b96f19 100644
--- a/alib2data/src/grammar/GrammarBase.h
+++ b/alib2data/src/grammar/GrammarBase.h
@@ -33,7 +33,7 @@ public:
 };
 
 class VisitableConstRGBase : public VisitableGrammarBase::const_visitor_type {
-
+public:
 	using VisitableGrammarBase::const_visitor_type::Visit;
 
 	void Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar&) const
-- 
GitLab