diff --git a/alib2cli/src/environment/Environment.h b/alib2cli/src/environment/Environment.h
index c8d0681b79e3ffeab46546b29e99b7604a6b573c..25782bc5e6d2ced3e137b3f567faec0a1dd1790e 100644
--- a/alib2cli/src/environment/Environment.h
+++ b/alib2cli/src/environment/Environment.h
@@ -84,8 +84,9 @@ public:
 	}
 
 	template < class T >
-	void setVariable ( std::string name, T value ) {
-		auto variable = std::make_shared < abstraction::ValueHolder < T > > ( std::move ( value ), false );
+	void setVariable ( std::string name, T && value ) {
+		static_assert ( ! std::is_reference_v < T >, "The argument is expected to be an rvalue reference." );
+		auto variable = std::make_shared < abstraction::ValueHolder < std::decay_t < T > > > ( std::forward < T > ( value ), false );
 		setVariableInt ( std::move ( name ), variable );
 	}
 
diff --git a/alib2cli/test-src/cli/CliTest.cpp b/alib2cli/test-src/cli/CliTest.cpp
index f38fe35e71c8c2cbae4cc9a11de6d8ec4705017d..ee4e29336303260438bdecd856e0e17defdf4ad0 100644
--- a/alib2cli/test-src/cli/CliTest.cpp
+++ b/alib2cli/test-src/cli/CliTest.cpp
@@ -297,7 +297,7 @@ TEST_CASE ( "Cli", "[unit][cli]" ) {
 		std::string in = "<Integer>1</Integer>";
 
 		cli::Environment environment;
-		environment.setVariable ( "in", in );
+		environment.setVariable ( "in", std::move ( in ) );
 		testLine ( "execute sax::SaxParseInterface $in | Move - | xml::Parse - | Add <(One) - | xml::Compose - | sax::SaxComposeInterface - > $out", environment );
 		std::string out = environment.getVariable < std::string > ( "out" );