Title
Meaning of "template function"
Status
tc1
Section
Clause [13] [temp]
Submitter
Daveed Vandevoorde

Created on 1999-04-16.00:00:00 last changed 228 months ago

Messages

Date: 2000-10-15.00:00:00

Proposed resolution (10/00):

In Clause 3 [intro.defs] “signature,” replace "template function specialization" by "function template specialization".

In 11.4.2 [class.mfct] paragraph 2, replace "template member functions" by "member functions of class templates and member function templates."

In 12.2.2 [over.match.funcs] paragraph 7 and footnote, replace all instances of "template functions" by "function template specializations."

In 12.2.4 [over.match.best] paragraph 1, fourth bullet (counting all bullets in that paragraph), replace "template function specialization" by "function template specialization". In the fifth bullet, replace "template functions" by "function template specializations."

In 12.3 [over.over] paragraph 2, replace "template function" by "function template specialization."

Change 12.3 [over.over] paragraph 4 from:

If more than one function is selected, any template functions in the set are eliminated if the set also contains a non-template function, and any given template function is eliminated if the set contains a second template function that is more specialized than the first according to the partial ordering rules of 13.7.7.3 [temp.func.order]. After such eliminations, if any, there shall remain exactly one selected function.
to:
If more than one function is selected, any function template specializations in the set are eliminated if the set also contains a non-template function, and any given function template specialization F1 is eliminated if the set contains a second function template specialization whose function template is more specialized than the function template of F1 according to the partial ordering rules of 13.7.7.3 [temp.func.order]. After such eliminations, if any, there shall remain exactly one selected function.

Change text in section Clause 13 [temp] paragraph 8 from:

A template function declared both exported and inline is just inline and not exported.
to:
A function template declared both exported and inline is just inline and not exported.

In 13.7.5 [temp.friend] paragraph 1, third bullet, replace "template function" by "function template" and "function specialization" by "function template specialization."

In footnote 130 (13.7.7 [temp.fct] paragraph 2), replace "template functions" by "function template specializations."

In 13.7.7.3 [temp.func.order] paragraph 1, third bullet change "template function specialization" to "function template specialization".

In 13.10.3 [temp.deduct] paragraph 1, change "template function specialization" to "function template specialization".

In _N4567_.17.3 [definitions] “component” change "non-member template functions that operate" to "non-member function templates that operate".

In _N4567_.17.3 [definitions] “traits class” change "template classes and template functions" to "class templates and function templates".

In 20.2 [utility] paragraph 1 change:

This subclause contains some basic template functions and classes that are used throughout the rest of the library.
to:
This subclause contains some basic function and class templates that are used throughout the rest of the library.

In 20.4 [pairs] paragrah 1 change "template function" to "function template".

In footnote 215 (_N3225_.20.8.11 [function.pointer.adaptors] paragraph 6) change "template functions" to "function templates".

In 28.3.1 [locale] paragraph 4 change "template function" to "function template".

In 23.3 [iterator.requirements] paragraph 2 change "template function" to "function template".

In 23.4.2 [std.iterator.tags] paragraph 1, change "template function" to "function template specialization."

In 23.4.3 [iterator.operations] paragraph 1 change "template function" to "function template", and "These functions use" to "These function templates use".

In the section heading of 29.7.5.3.4 [ostream.inserters.character] change "template functions" to "function templates".

In 16.3.2.3 [structure.requirements] paragraph 2 change "template class name char_traits" to "class template char_traits".

In the section heading of 17.3.5 [numeric.limits] change "Template class" to "Class template".

In 16.4.4.6 [allocator.requirements] paragraph 3 change "template class member rebind" to "member class template rebind" and change "template typedef" to "typedef template".

In the section heading of _N4140_.D.9.1 [depr.lib.binder.1st] change "Template class" to "Class template".

In the section heading of _N4140_.D.9.3 [depr.lib.binder.2nd] change "Template class" to "Class template".

In the section heading of _N4140_.D.10.1 [auto.ptr] change "Template class" to "Class template".

In the section heading of 21.3.3 [basic.string] change "Template class" to "Class template".

In 21.3.3 [basic.string] paragraphs 1 and 2 change "template class basic_string" to "class template basic_string".

In the section heading of 28.4.2.2 [locale.ctype] change "Template class" to "Class template".

In the section heading of 28.4.2.3 [locale.ctype.byname] change "Template class" to "Class template".

In the section heading of 28.4.2.5 [locale.codecvt] change "Template class" to "Class template".

In the section heading of 28.4.2.6 [locale.codecvt.byname] change "Template class" to "Class template".

In the section heading of 28.4.3.2 [locale.num.get] change "Template class" to "Class template".

In the section heading of 28.4.3.3 [locale.nm.put] change "Template class" to "Class template".

In the section heading of 28.4.4.1 [locale.numpunct] change "Template class" to "Class template".

In the section heading of 28.4.4.2 [locale.numpunct.byname] change "Template class" to "Class template".

In the section heading of 28.4.5.1 [locale.collate] change "Template class" to "Class template".

In the section heading of 28.4.5.2 [locale.collate.byname] change "Template class" to "Class template".

In the section heading of 28.4.6.2 [locale.time.get] change "Template class" to "Class template".

In the section heading of 28.4.6.3 [locale.time.get.byname] change "Template class" to "Class template".

In the section heading of 28.4.6.4 [locale.time.put] change "Template class" to "Class template".

In the section heading of 28.4.6.5 [locale.time.put.byname] change "Template class" to "Class template".

In the section heading of 28.4.7.2 [locale.money.get] change "Template class" to "Class template".

In the section heading of 28.4.7.3 [locale.money.put] change "Template class" to "Class template".

In the section heading of 28.4.7.4 [locale.moneypunct] change "Template class" to "Class template".

In the section heading of 28.4.7.5 [locale.moneypunct.byname] change "Template class" to "Class template".

In the section heading of 28.4.8.2 [locale.messages] change "Template class" to "Class template".

In the section heading of 28.4.8.3 [locale.messages.byname] change "Template class" to "Class template".

In the section heading of 22.3.8 [deque] change "Template class" to "Class template".

In the section heading of 22.3.10 [list] change "Template class" to "Class template".

In the section heading of 22.6.4 [queue] change "Template class" to "Class template".

In the section heading of 22.6.5 [priority.queue] change "Template class" to "Class template".

In the section heading of 22.6.6 [stack] change "Template class" to "Class template".

In the section heading of 22.3.11 [vector] change "Template class" to "Class template".

In the section heading of 22.4.4 [map] change "Template class" to "Class template".

In the section heading of 22.4.5 [multimap] change "Template class" to "Class template".

In the section heading of 22.4.6 [set] change "Template class" to "Class template".

In the section heading of 22.4.7 [multiset] change "Template class" to "Class template".

In the section heading of 20.9.2 [template.bitset] change "Template class" to "Class template".

In 20.9.2 [template.bitset] paragraph 1, change "template class" to "class template".

In the section heading of 23.5.1.2 [reverse.iterator] change "Template class" to "Class template".

In the section heading of 23.5.2.2 [back.insert.iterator] change "Template class" to "Class template".

In the section heading of 23.5.2.3 [front.insert.iterator] change "Template class" to "Class template".

In the section heading of 23.5.2.4 [insert.iterator] change "Template class" to "Class template".

In 23.6 [stream.iterators] paragraph 1, change "template classes" to "class templates".

In the section heading of 23.6.2 [istream.iterator] change "Template class" to "Class template".

In the section heading of 23.6.3 [ostream.iterator] [lib.ostream.iterator] change "Template class" to "Class template".

In the section heading of 23.6.4 [istreambuf.iterator] change "Template class" to "Class template".

In 23.6.4 [istreambuf.iterator] paragraph 1, change "template class" to "class template".

In the section heading of _N4606_.24.6.3.1 [istreambuf.iterator::proxy] change "Template class" to "Class template".

In the section heading of 23.6.5 [ostreambuf.iterator] change "Template class" to "Class template".

In 23.6.5 [ostreambuf.iterator] paragraph 1, change "template class" to "class template".

In 26.4 [complex.numbers] paragraph 1, change "template class" to "class template".

In the section heading of 26.4.3 [complex] change "Template class" to "Class template".

In _N2798_.26.5.1 [valarray.synopsis] paragraph 1, change "template classes" to "class templates" and change "function signatures" to "function templates".

In the section heading of 26.7.2 [template.valarray] change "Template class" to "Class template".

In the section heading of 26.7.5 [template.slice.array] change "Template class" to "Class template".

In the section heading of 26.7.7 [template.gslice.array] change "Template class" to "Class template".

In the section heading of 26.7.8 [template.mask.array] change "Template class" to "Class template".

In the section heading of 26.7.9 [template.indirect.array] change "Template class" to "Class template".

In 29.3 [iostream.forward] [lib.iostream.forward] paragraphs 3 to 7, change "template classes" to "class templates". [Note: Some editorial changes were made in paragraphs 2 to 8 when these changes were applied in September 2001.]

In the section heading of 29.5.3 [fpos] change "Template class" to "Class template".

In the section heading of 29.5.4 [ios] change "Template class" to "Class template".

In the section heading of 29.6.3 [streambuf] change "Template class" to "Class template".

In 29.6.3 [streambuf] paragraphs 2 and 3, change "template class" to "class template".

In the section heading of 29.7.4.2 [istream] change "Template class" to "Class template".

In the section heading of 29.7.4.7 [iostreamclass] change "Template class" to "Class template".

In the section heading of 29.7.5.2 [ostream] change "Template class" to "Class template".

In 29.8 [string.streams] paragraph 1 change "template classes" to "class templates".

In the section heading of 29.8.2 [stringbuf] change "Template class" to "Class template".

In the section heading of 29.8.3 [istringstream] change "Template class" to "Class template".

In the section heading of 29.8.5 [stringstream] change "Template class" to "Class template".

In the section heading of 29.10.2 [filebuf] change "Template class" to "Class template".

In the section heading of 29.10.3 [ifstream] change "Template class" to "Class template".

In the section heading of 29.10.4 [ofstream] change "Template class" to "Class template".

In the section heading of 29.10.5 [fstream] change "Template class" to "Class template".

Date: 2020-12-15.00:00:00

The phrase "template function" is sometimes used to refer to a template (e.g., in Clause 13 [temp] paragraph 8) and sometimes to refer to a function generated from a template (e.g., 12.3 [over.over] paragraph 4).

Suggested Resolution:

The phrase should mean "a function generated from a template" (or might perhaps include explicit specializations).

History
Date User Action Args
2003-04-25 00:00:00adminsetstatus: dr -> tc1
2000-11-18 00:00:00adminsetstatus: ready -> dr
2000-05-21 00:00:00adminsetmessages: + msg322
2000-05-21 00:00:00adminsetstatus: drafting -> ready
2000-02-23 00:00:00adminsetstatus: open -> drafting
1999-04-16 00:00:00admincreate