Title
What is the “first declaration” of an explicit specialization?
Status
cd2
Section
9.5 [dcl.fct.def]
Submitter
Daveed Vandevoorde

Created on 2009-03-20.00:00:00 last changed 178 months ago

Messages

Date: 2010-03-15.00:00:00

[Voted into WP at March, 2010 meeting.]

Date: 2009-10-15.00:00:00

Notes from the October, 2009 meeting:

It was observed that this specification is complicated by the fact that the “first declaration” of a function might be in a block-extern declaration.

Date: 2009-10-15.00:00:00

Proposed resolution (October, 2009):

A deleted definition of a function shall be the first declaration of the function or, for an explicit specialization of a function template, the first declaration of that specialization.

(This resolution also resolves issue 915.)

Date: 2009-11-08.00:00:00

According to 9.5 [dcl.fct.def] paragraph 10,

A deleted definition of a function shall be the first declaration of the function.

The Standard is not currently clear about what the “first declaration” of an explicit specialization of a function template is. For example,

    template<typename T> void f() { }
    template<> void f<int>() = delete;  // First declaration?
History
Date User Action Args
2010-03-29 00:00:00adminsetmessages: + msg2709
2010-03-29 00:00:00adminsetstatus: ready -> cd2
2009-11-08 00:00:00adminsetmessages: + msg2362
2009-11-08 00:00:00adminsetmessages: + msg2361
2009-11-08 00:00:00adminsetstatus: open -> ready
2009-03-20 00:00:00admincreate