diff --git a/alib2std/src/extensions/container/variant.hpp b/alib2std/src/extensions/container/variant.hpp
index 96f9f9c7011828fdc4d0f8a9c8f6fbb84f16cc12..cc0cc61da731551bc80fd110038b7bfc1b446090 100644
--- a/alib2std/src/extensions/container/variant.hpp
+++ b/alib2std/src/extensions/container/variant.hpp
@@ -41,7 +41,7 @@ namespace ext {
 template < class Visitor, class... Variants >
 constexpr auto visit ( Visitor && vis, Variants && ... vars ) {
 	auto extToStd = [] ( auto && variant ) {
-		using __std__variant = typename std::decay_t < decltype ( variant ) >::__std__variant;
+		using __std__variant = typename std::decay_t < decltype ( variant ) >::__base;
 
 		if constexpr ( std::is_lvalue_reference_v < decltype ( variant ) > && std::is_const_v < std::remove_reference_t < decltype ( variant ) > > ) {
 			return static_cast < const __std__variant & > ( variant );
@@ -56,6 +56,7 @@ constexpr auto visit ( Visitor && vis, Variants && ... vars ) {
 
 	return std::visit ( std::forward < Visitor > ( vis ), extToStd ( std::forward < Variants > ( vars ) ) ... );
 }
+
 /**
  * \brief
  * Class to help building of the variant type or, in case variant is requested to be constructed from single type or more types but all the same, that concrete type.
@@ -77,11 +78,6 @@ struct variant_builder_impl {
 template < class ... ResTs >
 struct variant_builder_impl < std::variant < ResTs ... > > : public std::variant < ResTs ... > {
 	typedef std::variant < ResTs ... > __std__variant;
-
-	/**
-	 * Inherit constructors of the standard variant
-	 */
-	using std::variant < ResTs ... >::variant; // NOLINT(modernize-use-equals-default)
 };
 
 /**
@@ -94,20 +90,15 @@ struct variant_builder_impl < std::variant < ResTs ... > > : public std::variant
  */
 template < class ... ResTs, class T, class ... Ts >
 struct variant_builder_impl < std::variant < ResTs ... >, T, Ts ... > : public variant_builder_impl < typename std::conditional < is_in < T, ResTs ... >::value, std::variant < ResTs ... >, std::variant < ResTs ..., T > >::type, Ts ... > {
-	/**
-	 * Inherit constructors of the standard variant
-	 */
-	using variant_builder_impl < typename std::conditional < is_in < T, ResTs ... >::value, std::variant < ResTs ... >, std::variant < ResTs ..., T > >::type, Ts ... >::variant_builder_impl; // NOLINT(modernize-use-equals-default)
 };
 
 template < class T, class ... Ts >
 struct variant_builder_start : public variant_builder_impl < std::variant < T >, Ts ... > {
-	/**
-	 * Inherit constructors of the standard variant
-	 */
-	using variant_builder_impl < std::variant < T >, Ts ... >::variant_builder_impl; // NOLINT(modernize-use-equals-default)
 };
 
+template < class ... Ts >
+using __std__variant = typename variant_builder_start < Ts ... >::__std__variant;
+
 /**
  * \brief
  * Implementation of the variant class allowing to store any type of those listed in the template parameters. Void type is allowed, multiply specified same type is irrelevant.
@@ -115,7 +106,7 @@ struct variant_builder_start : public variant_builder_impl < std::variant < T >,
  * \tparam Ts ... pack of allowed types.
  */
 template < typename ... Ts >
-class variant : public variant_builder_start < Ts ... > {
+class variant : public __std__variant < Ts ... > {
 	/**
 	 * Internal variant to string callback implementation.
 	 */
@@ -216,15 +207,20 @@ class variant : public variant_builder_start < Ts ... > {
 		}
 	};
 public:
+	/**
+	 * Remember the base class, i.e. std::variant
+	 */
+	typedef __std__variant < Ts ... > __base;
+
 	/**
 	 * Inherit constructors of the standard variant
 	 */
-	using variant_builder_start < Ts ... >::variant_builder_start; // NOLINT(modernize-use-equals-default)
+	using __std__variant < Ts ... >::__std__variant; // NOLINT(modernize-use-equals-default)
 
 	/**
 	 * Inherit operator = of the standard variant
 	 */
-	using variant_builder_start < Ts ... >::__std__variant::operator=;
+	using __std__variant < Ts ... >::operator=;
 #ifndef __clang__
 
 	/**