[llvm-dev] returning Expected<tool_output_file>

Dvir Yitzchaki via llvm-dev llvm-dev at lists.llvm.org
Wed Jul 12 02:25:51 PDT 2017


Actually, a default move constructor is not good as it needs to swap the buffers, so I have to define it myself.

Regards,
Dvir

From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Dvir Yitzchaki via llvm-dev
Sent: Tuesday, July 11, 2017 15:31
To: llvm-dev at lists.llvm.org
Subject: [llvm-dev] returning Expected<tool_output_file>

Hi list.

I've wrote a function which creates an output file as follows:

llvm::Expected<llvm::tool_output_file>
createOutputFile(llvm::StringRef FileName) {
  std::error_code EC;
  llvm::tool_output_file Out(FileName, EC, llvm::sys::fs::F_Text);
  if (EC) {
    return llvm::errorCodeToError(EC);
  }

  return Out;
}

This fails to compile, however because tool_output_file is not copyable or even moveable which Expected requires.
If I add default move constructors to raw_ostream and raw_fd_ostream the code above compile fine.
Is such a patch welcome? Is there a different way to achieve this?

Regards,
Dvir
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170712/676688fa/attachment.html>


More information about the llvm-dev mailing list