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" );