Section: 23.14.12 [func.memfn], 23.14.10 [func.not_fn], 23.14.11 [func.bind] Status: New Submitter: Detlef Vollmann Opened: 2017-10-07 Last modified: 2017-11-10
View all other issues in [func.memfn].
View all issues with New status.
Even after the discussion on the reflector, starting with this reflector message it's not completely clear that unspecified as return type of mem_fn really means 'unspecified, but always the same'. The same problem exists for bind() and not_fn().Possible solution: Specify in 23.14.2 [func.def] or 23.14.3 [func.require] that a call wrapper type is always the same for forwarding call wrappers if the object is returned by a function with the same parameter types. And also put into 23.14.10 [func.not_fn] that a call_wrapper object is a simple call wrapper.
[2017-11 Albuquerque Wednesday night issues processing]
Priority set to 3. Tomasz to write a paper that will address this issue. See also 3015
[2017-11-10, Tomasz comments and provides wording together with STL]
From the core language rules it is already required that same function template specialization have the same return type. Given that the invocation of mem_fn/bind/not_fn will always return the same wrapper type, if they are instantiated (called with) same parameters type. However, the existence of this issue, shows that some library-wide clarification note would be welcomed.
This wording is relative to N4700.
After section 184.108.40.206.2 [expos.only.types] "Exposition-only types" add the following new section: