diff --git a/alib2abstraction/src/factory/NormalizeFactory.hpp b/alib2abstraction/src/factory/NormalizeFactory.hpp index dcbcd0bb5aac27b4c6045ba6e697a7ff43f52381..61bcf57eae5d5e039bc34936784aea2538306435 100644 --- a/alib2abstraction/src/factory/NormalizeFactory.hpp +++ b/alib2abstraction/src/factory/NormalizeFactory.hpp @@ -46,19 +46,19 @@ public: template < class DesignatedType > static object::Object normalize ( DesignatedType && arg ) { if constexpr ( std::is_same_v < DesignatedType, object::Object > ) { - return std::move ( arg ); + return std::forward < DesignatedType > ( arg ); } else if constexpr ( is_variant_v < DesignatedType > ) { auto visitor = [] < class T > ( T && element ) { - return factory::NormalizeFactory::normalize < T > ( std::move ( element ) ); + return factory::NormalizeFactory::normalize < T > ( std::forward < T > ( element ) ); }; - return ext::visit ( visitor, std::move ( arg ) ); + return ext::visit ( visitor, std::forward < DesignatedType > ( arg ) ); } else { using normalizedType = typename std::decay < typename std::result_of < decltype ( & core::type_util < DesignatedType >::normalize ) ( DesignatedType && ) >::type >::type; if constexpr ( std::is_same_v < normalizedType, DesignatedType > ) { - return object::ObjectFactory < >::construct ( std::move ( arg ) ); + return object::ObjectFactory < >::construct ( std::forward < DesignatedType > ( arg ) ); } else { - return object::ObjectFactory < >::construct ( core::type_util < DesignatedType >::normalize ( std::move ( arg ) ) ); + return object::ObjectFactory < >::construct ( core::type_util < DesignatedType >::normalize ( std::forward < DesignatedType > ( arg ) ) ); } } }