diff --git a/alib2std/src/extensions/type_traits.hpp b/alib2std/src/extensions/type_traits.hpp
index d059f0642768c272408cd7a1cfa6816f77b0ddfc..fa1f9f65959b39d7d11b6ca38a8fc7aed3743886 100644
--- a/alib2std/src/extensions/type_traits.hpp
+++ b/alib2std/src/extensions/type_traits.hpp
@@ -96,40 +96,7 @@ namespace ext {
 	 * \tparam Ts ... the types pack to look in
 	 */
 	template < typename T, typename ... Ts >
-	struct is_in;
-
-	/**
-	 * \brief
-	 * Trait to test whether type T is in a types pack. The trait provides field value set to true if the type T is in pack of types Ts ..., false othervise.
-	 *
-	 * Specialisation for empty pack, in which case the field is set to false.
-	 *
-	 * \tparam T the type to look for
-	 */
-	template < typename T >
-	struct is_in < T > : std::false_type { };
-
-	/**
-	 * \brief
-	 * Trait to test whether type T is in a types pack. The trait provides field value set to true if the type T is in pack of types Ts ..., false othervise.
-	 *
-	 * Specialisation for non-empty pack where the first type in the pack is different from the tested type, in which case the field is set to result of the recursive test on shorter pack.
-	 *
-	 * \tparam T the type to look for
-	 */
-	template < typename T, typename U, typename ... Ts >
-	struct is_in < T, U, Ts ... > : is_in < T, Ts ... > { };
-
-	/**
-	 * \brief
-	 * Trait to test whether type T is in a types pack. The trait provides field value set to true if the type T is in pack of types Ts ..., false othervise.
-	 *
-	 * Specialisation for non-empty pack where the first type in the pack is the same as the tested type, in which case the field is set to true.
-	 *
-	 * \tparam T the type to look for
-	 */
-	template < typename T, typename ... Ts >
-	struct is_in < T, T, Ts ... > : std::true_type { };
+	using is_in = std::integral_constant < bool, ( std::is_same < T, Ts >::value || ... ) >;
 
 // ----------------------------------------------------------------------------------------------------