2930. Are implementations allowed to split non-member functions into several overloads?

Section: 20.5.5.4 [global.functions] Status: NAD Submitter: Morwenn Opened: 2017-02-04 Last modified: 2017-03-19

Priority: Not Prioritized

View all other issues in [global.functions].

View all issues with NAD status.

Discussion:

Section 20.5.5.5 [member.functions] makes it clear that standard library implementers are allowed to "replace a member function with default arguments with two or more member functions with equivalent behavior". However, it is unclear when reading 20.5.5.4 [global.functions] whether implementers are allowed to perform the same transformation for non-member functions. 20.5.5.4 [global.functions] p3 mentions that "an implementation shall not declare a non-member function signature with additional default arguments", but does not explicitly forbid to replace a function with default arguments with more functions with equivalent behavior.

The standard should make it clear whether such a transformation is conforming or not, probably through a note [global.functions].

Link to the Standard Discussion forum.

[2017-03-04, Kona]

We believe that [member.functions]p2 is clear.

Proposed resolution: