[PATCH] D33895: [Support] Add TempFailureRetry helper function

Eric Fiselier via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 15 12:59:45 PDT 2017

EricWF added inline comments.

Comment at: include/llvm/Support/Errno.h:32
+template <typename Fun, typename... Args>
+inline typename std::result_of<Fun && (Args && ...)>::type
The value-categories seem all messed up here. There is no reason to be using `&&` anywhere, since all of the arguments and the function are lvalues. Personally I would write this function as:

template <typename Fun, typename... Args,
          typename ResultT = typename std::result_of<Fun const& (const Args&...)>::type>
inline ResultT RetryAfterSignal(ResultT Fail, const Fun &F, const Args &... As) {
  ResultT Res;
    Res = F(As...);
  while (Res == Fail && errno == EINTR);
  return Res;


More information about the llvm-commits mailing list