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

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

Messages

Date: 2000-10-15.00:00:00

Proposed resolution (10/00):

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

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

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

In 16.3.3 [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 16.4 [over.over] paragraph 2, replace "template function" by "function template specialization."

Change 16.4 [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 17.6.6.2 [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 17.6.6.2 [temp.func.order]. After such eliminations, if any, there shall remain exactly one selected function.

Change text in section 17 [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 17.6.4 [temp.friend] paragraph 1, third bullet, replace "template function" by "function template" and "function specialization" by "function template specialization."

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

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

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

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

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

In 23.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 23.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 25.3.1 [locale] paragraph 4 change "template function" to "function template".

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

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

In 27.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 30.7.5.2.4 [ostream.inserters.character] change "template functions" to "function templates".

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

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

In 20.5.3.5 [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 24.3.2 [basic.string] change "Template class" to "Class template".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

In 27.6.3 [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 27.6.4 [ostreambuf.iterator] change "Template class" to "Class template".

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

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

In the section heading of 29.5.2 [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 29.7.2 [template.valarray] change "Template class" to "Class template".

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

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

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

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

In 30.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 30.5.4 [fpos] change "Template class" to "Class template".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Date: 2003-04-25.00:00:00

The phrase "template function" is sometimes used to refer to a template (e.g., in 17 [temp] paragraph 8) and sometimes to refer to a function generated from a template (e.g., 16.4 [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