Skip to content

[stmt.expand] Does the for loop that calculates N need to void-cast the return value of incrementing the iterator? CWG3044 #8125

@hewillk

Description

@hewillk

From [stmt.expand]:

where N is the result of evaluating the expression

[] consteval {
  std::ptrdiff_t result = 0;
  for (auto i = begin; i != end; ++i, ++result);
  return result;                                // distance from begin to end
}()

Do we need to do a void casting here to comply with the standard's awareness of operator,?

[] consteval {
  std::ptrdiff_t result = 0;
  for (auto i = begin; i != end; ++i, (void)++result);
  return result;                                // distance from begin to end
}()

If so, is this LWG or CWG, or is this editorial (which I strongly doubt)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    cwgIssue must be reviewed by CWG.not-editorialIssue is not deemed editorial; the editorial issue is kept open for tracking.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions