1279. forbid [u|bi]nary_function specialization

Section: 99 [depr.base] Status: C++11 Submitter: Alberto Ganesh Barbati Opened: 2009-11-30 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [depr.base].

View all issues with C++11 status.


A program should not be allowed to add specialization of class templates unary_function and binary_function, in force of [namespace.std]/1. If a program were allowed to specialize these templates, the library could no longer rely on them to provide the intended typedefs or there might be other undesired interactions.

[ 2010-03-27 Daniel adds: ]

Accepting issue 1290 would resolve this issue as NAD editorial.

[ 2010-10-24 Daniel adds: ]

Accepting n3145 would resolve this issue as NAD editorial.

[ 2010 Batavia: ]

Pete: Is this issue actually addressed by N3198, or did deprecating unary/binary_function?

We determined that this issue is NOT resolved and that it must be resolved or else N3198 could break code that does specialize unary/binary function.

Matt: don't move to NAD

Howard: I suggest we go further and move 1279 to ready for Madrid.

Group: Agrees move 1279 to ready for Madrid

Previous proposed resolution:

1 The following classes class templates are provided to simplify the typedefs of the argument and result types:. A program shall not declare specializations of these templates.

[2011-03-06 Daniel comments]

This meeting outcome was not properly reflected in the proposed resolution. I also adapted the suggested wording to the N3242 numbering and content state. During this course of action it turned out that the first suggested wording change has already been applied.

Proposed resolution:

Change paragraph 99 [depr.base]/1 as follows:

1 The class templates unary_function and binary_function are deprecated. A program shall not declare specializations of these templates.