Index: src/SynTree/ApplicationExpr.cc
===================================================================
--- src/SynTree/ApplicationExpr.cc	(revision 682dcae3ba54d09eec8ad00203e59ee89c718ea9)
+++ src/SynTree/ApplicationExpr.cc	(revision 4d6d62ed4859b907bfb967784da082be0112c77a)
@@ -49,4 +49,27 @@
 }
 
+ParamEntry::ParamEntry( ParamEntry && other ) :
+		decl( other.decl ), actualType( other.actualType ), formalType( other.formalType ), expr( other.expr ), inferParams( std::move( other.inferParams ) ) {
+	other.actualType = nullptr;
+	other.formalType = nullptr;
+	other.expr = nullptr;
+}
+
+ParamEntry & ParamEntry::operator=( ParamEntry && other ) {
+	if ( &other == this ) return *this;
+	delete actualType;
+	delete formalType;
+	delete expr;
+	decl = other.decl;
+	actualType = other.actualType;
+	formalType = other.formalType;
+	expr = other.expr;
+	other.actualType = nullptr;
+	other.formalType = nullptr;
+	other.expr = nullptr;
+	inferParams = std::move( other.inferParams );
+	return *this;
+}
+
 ApplicationExpr::ApplicationExpr( Expression *funcExpr, const std::list<Expression *> & args ) : function( funcExpr ), args( args ) {
 	PointerType *pointer = strict_dynamic_cast< PointerType* >( funcExpr->get_result() );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 682dcae3ba54d09eec8ad00203e59ee89c718ea9)
+++ src/SynTree/Expression.h	(revision 4d6d62ed4859b907bfb967784da082be0112c77a)
@@ -41,6 +41,8 @@
 	ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ), inferParams( new InferredParams ) {}
 	ParamEntry( const ParamEntry & other );
+	ParamEntry( ParamEntry && other );
 	~ParamEntry();
 	ParamEntry & operator=( const ParamEntry & other );
+	ParamEntry & operator=( ParamEntry && other );
 
 	UniqueId decl;
