diff --git a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp index ef0522b42a4e5a33f7d4a9250c8022e8b3a4eebc..8e5b822979d6875e6cf1ae6ea003230f9a0b1d0d 100644 --- a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp @@ -21,7 +21,7 @@ class ValueOperationAbstractionImpl : virtual public ValueInterface < ReturnType mutable std::optional < ReturnType > m_data; protected: - void setData ( ReturnType data ) { + void setData ( ReturnType && data ) { m_data = std::move ( data ); } @@ -46,7 +46,7 @@ class ValueOperationAbstractionImpl < const ReturnType > : virtual public ValueI mutable std::optional < ReturnType > m_data; protected: - void setData ( ReturnType data ) { + void setData ( ReturnType && data ) { m_data = std::move ( data ); } @@ -93,15 +93,15 @@ public: template < class ReturnType > class ValueOperationAbstractionImpl < const ReturnType & > : virtual public ValueInterface < ReturnType > { - mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + mutable std::optional < std::reference_wrapper < ReturnType > > m_data; protected: void setData ( const ReturnType & data ) { - m_data = std::reference_wrapper < const ReturnType > ( data ); + m_data = std::reference_wrapper < ReturnType > ( const_cast < ReturnType & > ( data ) ); } ReturnType && getValue ( ) const override { - return std::move ( const_cast < ReturnType & > ( m_data->get ( ) ) ); + return std::move ( m_data->get ( ) ); } public: @@ -143,15 +143,15 @@ public: template < class ReturnType > class ValueOperationAbstractionImpl < const ReturnType && > : virtual public ValueInterface < ReturnType > { - mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + mutable std::optional < std::reference_wrapper < ReturnType > > m_data; protected: void setData ( const ReturnType && data ) { - m_data = std::reference_wrapper < const ReturnType > ( data ); + m_data = std::reference_wrapper < ReturnType > ( const_cast < ReturnType & > ( data ) ); } ReturnType && getValue ( ) const override { - return std::move ( const_cast < ReturnType & > ( m_data->get ( ) ) ); + return std::move ( m_data->get ( ) ); } public: