diff --git a/alib2data/src/regexp/formal/FormalRegExpEmpty.h b/alib2data/src/regexp/formal/FormalRegExpEmpty.h
index 2f4f394d4c4a016b29ddbac8826db04728543e55..b46f382ac01a482c5a561863c53a90f104477726 100644
--- a/alib2data/src/regexp/formal/FormalRegExpEmpty.h
+++ b/alib2data/src/regexp/formal/FormalRegExpEmpty.h
@@ -52,7 +52,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the empty node.
 	 */
-	explicit FormalRegExpEmpty ( );
+	explicit FormalRegExpEmpty ( ) = default;
 
 	/**
 	 * @copydoc FormalRegExpElement::clone ( ) const &
@@ -126,11 +126,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-FormalRegExpEmpty < SymbolType >::FormalRegExpEmpty ( ) {
-	// so that default constructor is available
-}
-
 template < class SymbolType >
 FormalRegExpEmpty < SymbolType > * FormalRegExpEmpty < SymbolType >::clone ( ) const & {
 	return new FormalRegExpEmpty ( * this );
diff --git a/alib2data/src/regexp/formal/FormalRegExpEpsilon.h b/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
index 7d44a26b503fba5350ac511018ac621ca71cccb2..623b33f20f77f3da73e6591c8588f15ec3734db2 100644
--- a/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
+++ b/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
@@ -52,7 +52,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the epsilon node.
 	 */
-	explicit FormalRegExpEpsilon ( );
+	explicit FormalRegExpEpsilon ( ) = default;
 
 	/**
 	 * @copydoc FormalRegExpElement::clone ( ) const &
@@ -126,11 +126,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-FormalRegExpEpsilon < SymbolType >::FormalRegExpEpsilon ( ) {
-	// so that default constructor is available
-}
-
 template < class SymbolType >
 FormalRegExpEpsilon < SymbolType > * FormalRegExpEpsilon < SymbolType >::clone ( ) const & {
 	return new FormalRegExpEpsilon ( * this );
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
index 95fdec227df70ae09bbbbb29faf05e6186fbcd51..b84195f02af5ebd4a9ea612979430646fb1e25ee 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
@@ -62,7 +62,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the alternation node. By default it is semantically equivalent to empty regular expression.
 	 */
-	explicit UnboundedRegExpAlternation ( );
+	explicit UnboundedRegExpAlternation ( ) = default;
 
 	/**
 	 * @copydoc UnboundedRegExpElement::clone ( ) const &
@@ -170,10 +170,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-UnboundedRegExpAlternation < SymbolType >::UnboundedRegExpAlternation ( ) {
-}
-
 template < class SymbolType >
 const ext::ptr_vector < UnboundedRegExpElement < SymbolType > > & UnboundedRegExpAlternation < SymbolType >::getElements ( ) const {
 	return this->getChildren();
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
index ea0b0f4b7a40df115d858d4790db87cd562ccac9..cf600acb245585d306c8700c8d7ff17607ade494 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
@@ -62,7 +62,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the concatenation node. By default it is semantically equivalent to epsilon.
 	 */
-	explicit UnboundedRegExpConcatenation ( );
+	explicit UnboundedRegExpConcatenation ( ) = default;
 
 	/**
 	 * @copydoc UnboundedRegExpElement::clone ( ) const &
@@ -170,10 +170,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-UnboundedRegExpConcatenation < SymbolType >::UnboundedRegExpConcatenation ( ) {
-}
-
 template < class SymbolType >
 const ext::ptr_vector < UnboundedRegExpElement < SymbolType > > & UnboundedRegExpConcatenation < SymbolType >::getElements ( ) const {
 	return this->getChildren();
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h b/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
index f4a1bd5d33cf5448a4f24cdcc8d5737514f9c60b..d2dc21bd7f053773ea5e1740569660bdb6f7d0df 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
@@ -59,7 +59,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the empty node.
 	 */
-	explicit UnboundedRegExpEmpty ( );
+	explicit UnboundedRegExpEmpty ( ) = default;
 
 	/**
 	 * @copydoc UnboundedRegExpElement::clone ( ) const &
@@ -133,11 +133,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-UnboundedRegExpEmpty < SymbolType >::UnboundedRegExpEmpty ( ) {
-	// so that default constructor is available
-}
-
 template < class SymbolType >
 UnboundedRegExpEmpty < SymbolType > * UnboundedRegExpEmpty < SymbolType >::clone ( ) const & {
 	return new UnboundedRegExpEmpty ( * this );
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h b/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
index 7d9ad5493b0e9d0efc230bbf2ef1f8f958462631..d179e27d388e5e9a237510b85fc06f2d0cab4969 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
@@ -59,7 +59,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the epsilon node.
 	 */
-	explicit UnboundedRegExpEpsilon ( );
+	explicit UnboundedRegExpEpsilon ( ) = default;
 
 	/**
 	 * @copydoc UnboundedRegExpElement::clone ( ) const &
@@ -133,11 +133,6 @@ public:
 
 namespace regexp {
 
-template < class SymbolType >
-UnboundedRegExpEpsilon < SymbolType >::UnboundedRegExpEpsilon ( ) {
-	// so that default constructor is available
-}
-
 template < class SymbolType >
 UnboundedRegExpEpsilon < SymbolType > * UnboundedRegExpEpsilon < SymbolType >::clone ( ) const & {
 	return new UnboundedRegExpEpsilon ( * this );
diff --git a/alib2data/src/rte/formal/FormalRTEEmpty.h b/alib2data/src/rte/formal/FormalRTEEmpty.h
index e3a4a823eb84d45783b2d6e2e4d5526b23a49dc5..82be322b2a39643d5b0b4b165580d80fd085f730 100644
--- a/alib2data/src/rte/formal/FormalRTEEmpty.h
+++ b/alib2data/src/rte/formal/FormalRTEEmpty.h
@@ -59,7 +59,7 @@ public:
 	/**
 	 * \brief Creates a new instance of the empty node.
 	 */
-	explicit FormalRTEEmpty ( );
+	explicit FormalRTEEmpty ( ) = default;
 
 	/**
 	 * @copydoc FormalRTEElement < SymbolType, RankType >::clone ( ) const &
@@ -122,11 +122,6 @@ public:
 	}
 };
 
-template < class SymbolType, class RankType >
-FormalRTEEmpty < SymbolType, RankType >::FormalRTEEmpty ( ) {
-	// so that default constructor is available
-}
-
 template < class SymbolType, class RankType >
 FormalRTEEmpty < SymbolType, RankType > * FormalRTEEmpty < SymbolType, RankType >::clone ( ) const & {
 	return new FormalRTEEmpty ( * this );