diff --git a/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp b/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp index 2ff1c19f35..9eebb2f916 100644 --- a/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp @@ -303,7 +303,23 @@ public:)~~~"); @message.pascal_name@(@message.pascal_name@ const&) = default; @message.pascal_name@(@message.pascal_name@&&) = default; @message.pascal_name@& operator=(@message.pascal_name@ const&) = default; - @message.constructor@ + @message.constructor@)~~~"); + + if (parameters.size() == 1) { + auto const& parameter = parameters[0]; + message_generator.set("parameter.type"sv, parameter.type); + message_generator.set("parameter.name"sv, parameter.name); + + message_generator.appendln(R"~~~( + template + requires(!SameAs) + @message.pascal_name@(WrappedReturnType&& value) + : m_@parameter.name@(forward(value)) + { + })~~~"); + } + + message_generator.appendln(R"~~~( virtual ~@message.pascal_name@() override {} virtual u32 endpoint_magic() const override { return @endpoint.magic@; }