+/** @brief Replacement for C++20's std::type_identity_t
+ */
+#if __cplusplus >= 201806L // __cpp_lib_type_identity
+template <class T> using type_identity_t = typename std::type_identity_t<T>;
+#else
+template <class T> struct type_identity {
+ using type = T;
+};
+
+template <class T> using type_identity_t = typename type_identity<T>::type;
+#endif
+