On 02/13/2018 07:40 AM, Jason Merrill wrote:
On Mon, Feb 12, 2018 at 6:32 PM, Martin Sebor <mse...@gmail.com> wrote:
While testing my fix for 83871 (handling attributes on explicit
specializations) I noticed another old regression: while GCC 4.4
would diagnose declarations of explicit specializations of all
primary templates declared deprecated, GCC 4.5 and later only
diagnose declarations of explicit specializations of class
templates but not those of function or variable templates.
Hmm, the discussion on the core reflector seemed to be agreeing that
we want to be able to define non-deprecated specializations of a
deprecated primary template.
Yes, that's what Richard wanted to do. The only way to do it
within the existing constraints(*) is to define a non-deprecated
primary, and a deprecated partial specialization. This is in line
with that approach and supported by Clang and all other compilers
I tested (including Clang).
[*] Except (as Richard noted) that the standard doesn't seem to
allow a template to be deprecated. I think that's a bug in the
spec because all implementations allow it to some degree.