C++ Logo


Advanced search

Re: An confusion about the paragraph [temp.expl.spec#18]

From: Johannes Schaub <schaub.johannes_at_[hidden]>
Date: Tue, 29 Sep 2020 22:34:20 +0200
The introduction of "templated entity" helped, but there seems to be
something to clarify or fixed about the notion of "explicit specialization"
(?). http://eel.is/c++draft/temp.spec#general-3.sentence-3 and the
follow-up example for the static data member (though non-normative, but
helps to identify the intent) indicates that in a specialization of a
member definition for an implicit instantiation of its enclosing template,
the set of entities that are considered to be explicitly specialized (at
least in the context of this declaration) include the surrounding class,
but whose specialization is _implicitly_ instantiated!

Am Di., 29. Sept. 2020 um 21:45 Uhr schrieb Johannes Schaub <

> I disagree. What happens is that B<double> names "a given implicit
> instantiation" of B, and what is being explicitly specialized is a member
> of that implicit instantiation. This is the case at
> http://eel.is/c++draft/temp#expl.spec-16 .
> Am Mo., 28. Sept. 2020 um 17:52 Uhr schrieb Thiago Macieira via
> Std-Discussion <std-discussion_at_[hidden]>:
>> On Monday, 28 September 2020 01:51:24 PDT jim x via Std-Discussion wrote:
>> > Consider the above example, The comment says that the code is
>> ill-formed.
>> > However, I have to say, such a case is not covered by this rule. My
>> reason
>> > is that, please note the bolded wording, that is "class member
>> template",
>> > in this explicit specialization, `mf2` is not a class member *template,
>> *it
>> > just a member of a class template
>> B<double> is being specialised and that is a template.
>> --
>> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
>> Software Architect - Intel DPG Cloud Engineering
>> --
>> Std-Discussion mailing list
>> Std-Discussion_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

Received on 2020-09-29 15:39:47