<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 105</TITLE>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<STYLE TYPE="text/css">
  INS { text-decoration:none; font-weight:bold; background-color:#A0FFA0 }
  .INS { text-decoration:none; background-color:#D0FFD0 }
  DEL { text-decoration:line-through; background-color:#FFA0A0 }
  .DEL { text-decoration:line-through; background-color: #FFD0D0 }
  @media (prefers-color-scheme: dark) {
    HTML { background-color:#202020; color:#f0f0f0; }
    A { color:#5bc0ff; }
    A:visited { color:#c6a8ff; }
    A:hover, a:focus { color:#afd7ff; }
    INS { background-color:#033a16; color:#aff5b4; }
    .INS { background-color: #033a16; }
    DEL { background-color:#67060c; color:#ffdcd7; }
    .DEL { background-color:#67060c; }
  }
  SPAN.cmnt { font-family:Times; font-style:italic }
</STYLE>
</HEAD>
<BODY>
<P><EM>This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
  Core Issues List revision 118b.
  See http://www.open-std.org/jtc1/sc22/wg21/ for the official
  list.</EM></P>
<P>2025-09-28</P>
<HR>
<A NAME="105"></A><H4>105.
  
Meaning of "template function"
</H4>
<B>Section: </B>Clause 13&#160; [<A href="https://wg21.link/temp">temp</A>]
 &#160;&#160;&#160;

 <B>Status: </B>TC1
 &#160;&#160;&#160;

 <B>Submitter: </B>Daveed Vandevoorde
 &#160;&#160;&#160;

 <B>Date: </B>16 Apr 1999<BR>



<P>The phrase "template function" is sometimes used to refer to a
template (e.g., in Clause 13 [<A href="https://wg21.link/temp#8">temp</A>] paragraph 8)

and sometimes to refer to a function generated from a template (e.g.,
12.3 [<A href="https://wg21.link/over.over#4">over.over</A>] paragraph 4)
.</P>

<P><B>Suggested Resolution:</B></P>

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

<P><B>Proposed resolution (10/00):</B></P>

<P>In Clause 3 [<A href="https://wg21.link/intro.defs">intro.defs</A>] &#8220;<INS>signature</INS>,&#8221;
replace "template function specialization"
by "function template specialization".
</P>

<P>In 11.4.2 [<A href="https://wg21.link/class.mfct#2">class.mfct</A>] paragraph 2, replace "template
member functions" by "member functions of class templates and
member function templates."</P>

<P>In 12.2.2 [<A href="https://wg21.link/over.match.funcs#7">over.match.funcs</A>] paragraph 7 and footnote, replace
all instances of "template functions" by "function template
specializations."</P>

<P>In 12.2.4 [<A href="https://wg21.link/over.match.best#1">over.match.best</A>] 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."
</P>

<P>In 12.3 [<A href="https://wg21.link/over.over#2">over.over</A>] paragraph 2, replace "template
function" by "function template specialization."</P>

<P>Change 12.3 [<A href="https://wg21.link/over.over#4">over.over</A>] paragraph 4 from:
<BLOCKQUOTE>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 [<A href="https://wg21.link/temp.func.order">temp.func.order</A>]. After such eliminations, if any,
there shall remain exactly one selected function.</BLOCKQUOTE>
to:
<BLOCKQUOTE>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 <TT>F1</TT> is eliminated if the set contains a
second function template specialization whose function template is more specialized than
the function template of <TT>F1</TT> according to the partial ordering rules of
13.7.7.3 [<A href="https://wg21.link/temp.func.order">temp.func.order</A>]. After such eliminations, if any, there shall remain exactly one
selected function.</BLOCKQUOTE>
</P>
<P>Change text in section Clause 13 [<A href="https://wg21.link/temp#8">temp</A>] paragraph 8 from:
<BLOCKQUOTE>A template function declared both exported and inline is just
inline and not exported.</BLOCKQUOTE>
to:
<BLOCKQUOTE>A function template declared both exported and inline is just
inline and not exported.</BLOCKQUOTE>
</P>

<P>In 13.7.5 [<A href="https://wg21.link/temp.friend#1">temp.friend</A>] paragraph 1, third bullet, replace
"template function" by "function template" and "function
specialization" by "function template specialization."</P>

<P>In footnote 130 (13.7.7 [<A href="https://wg21.link/temp.fct#2">temp.fct</A>] paragraph 2),
replace "template functions" by "function template specializations."</P>

<P>In 13.7.7.3 [<A href="https://wg21.link/temp.func.order#1">temp.func.order</A>] paragraph 1, third bullet change "template
function specialization" to "function template specialization".
</P>
<P>In 13.10.3 [<A href="https://wg21.link/temp.deduct#1">temp.deduct</A>] paragraph 1, change "template function specialization"
to "function template specialization".
</P>
<P>In _N4567_.17.3 [<A href="https://wg21.link/definitions">definitions</A>] &#8220;<B>component</B>&#8221;
change "non-member template functions that
operate" to "non-member function templates that operate".
</P>
<P>In _N4567_.17.3 [<A href="https://wg21.link/definitions">definitions</A>] &#8220;<B>traits class&#8221;</B>
change "template classes and template functions"
to "class templates and function templates".
</P>
<P>In 22.2 [<A href="https://wg21.link/utility#1">utility</A>] paragraph 1 change:
<BLOCKQUOTE>This subclause contains some basic template functions and classes
that are used throughout the rest of the library.</BLOCKQUOTE>
to:
<BLOCKQUOTE>This subclause contains some basic function and class templates
that are used throughout the rest of the library.</BLOCKQUOTE>
</P>
<P>In 22.3 [<A href="https://wg21.link/pairs">pairs</A>] paragrah 1 change "template function" to "function
template".
</P>
<P>In footnote 215 (_N3225_.20.8.11 [<A href="https://wg21.link/function.pointer.adaptors#6">function.pointer.adaptors</A>] paragraph 6)
change "template functions" to "function templates".
</P>
<P>In 28.3.3.1 [<A href="https://wg21.link/locale#4">locale</A>] paragraph 4 change "template function" to "function
template".
</P>
<P>In 24.3 [<A href="https://wg21.link/iterator.requirements#2">iterator.requirements</A>] paragraph 2 change "template function"
to "function template".
</P>

<P>In 24.4.2 [<A href="https://wg21.link/std.iterator.tags#1">std.iterator.tags</A>] paragraph 1, change "template
function" to "function template specialization."</P>

<P>In 24.4.3 [<A href="https://wg21.link/iterator.operations#1">iterator.operations</A>] paragraph 1 change "template function"
to "function template", and "These functions use" to "These function templates
use".
</P>
<P>In the section heading of 31.7.6.3.4 [<A href="https://wg21.link/ostream.inserters.character">ostream.inserters.character</A>]
change "template functions" to "function templates".
</P>
<P>In 16.3.2.3 [<A href="https://wg21.link/structure.requirements#2">structure.requirements</A>] paragraph 2 change "template
class name <TT>char_traits</TT>" to "class template <TT>char_traits</TT>".
</P>
<P>In the section heading of 17.3.5 [<A href="https://wg21.link/numeric.limits">numeric.limits</A>] change "Template
class" to "Class template".
</P>
<P>In 16.4.4.6 [<A href="https://wg21.link/allocator.requirements#3">allocator.requirements</A>] paragraph 3 change "template
class member <TT>rebind</TT>" to "member class template <TT>rebind</TT>"
and change "template typedef" to "typedef template".
</P>
<P>In the section heading of _N4140_.D.9.1 [<A href="https://wg21.link/depr.lib.binder.1st">depr.lib.binder.1st</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of _N4140_.D.9.3 [<A href="https://wg21.link/depr.lib.binder.2nd">depr.lib.binder.2nd</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of _N4140_.D.10.1 [<A href="https://wg21.link/auto.ptr">auto.ptr</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 27.4.3 [<A href="https://wg21.link/basic.string">basic.string</A>] change "Template
class" to "Class template".
</P>
<P>In 27.4.3 [<A href="https://wg21.link/basic.string">basic.string</A>] paragraphs 1 and 2 change "template class
<TT>basic_string</TT>"
to "class template <TT>basic_string</TT>".
</P>
<P>In the section heading of 28.3.4.2.2 [<A href="https://wg21.link/locale.ctype">locale.ctype</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.2.3 [<A href="https://wg21.link/locale.ctype.byname">locale.ctype.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.2.5 [<A href="https://wg21.link/locale.codecvt">locale.codecvt</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.2.6 [<A href="https://wg21.link/locale.codecvt.byname">locale.codecvt.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.3.2 [<A href="https://wg21.link/locale.num.get">locale.num.get</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.3.3 [<A href="https://wg21.link/locale.nm.put">locale.nm.put</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.4.1 [<A href="https://wg21.link/locale.numpunct">locale.numpunct</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.4.2 [<A href="https://wg21.link/locale.numpunct.byname">locale.numpunct.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.5.1 [<A href="https://wg21.link/locale.collate">locale.collate</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.5.2 [<A href="https://wg21.link/locale.collate.byname">locale.collate.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.6.2 [<A href="https://wg21.link/locale.time.get">locale.time.get</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.6.3 [<A href="https://wg21.link/locale.time.get.byname">locale.time.get.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.6.4 [<A href="https://wg21.link/locale.time.put">locale.time.put</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.6.5 [<A href="https://wg21.link/locale.time.put.byname">locale.time.put.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.7.2 [<A href="https://wg21.link/locale.money.get">locale.money.get</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.7.3 [<A href="https://wg21.link/locale.money.put">locale.money.put</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.7.4 [<A href="https://wg21.link/locale.moneypunct">locale.moneypunct</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.7.5 [<A href="https://wg21.link/locale.moneypunct.byname">locale.moneypunct.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 28.3.4.8.2 [<A href="https://wg21.link/locale.messages">locale.messages</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 28.3.4.8.3 [<A href="https://wg21.link/locale.messages.byname">locale.messages.byname</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 23.3.5 [<A href="https://wg21.link/deque">deque</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.3.11 [<A href="https://wg21.link/list">list</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.6.3 [<A href="https://wg21.link/queue">queue</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.6.4 [<A href="https://wg21.link/priority.queue">priority.queue</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 23.6.6 [<A href="https://wg21.link/stack">stack</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.3.13 [<A href="https://wg21.link/vector">vector</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.4.3 [<A href="https://wg21.link/map">map</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.4.4 [<A href="https://wg21.link/multimap">multimap</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.4.6 [<A href="https://wg21.link/set">set</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 23.4.7 [<A href="https://wg21.link/multiset">multiset</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 22.9.2 [<A href="https://wg21.link/template.bitset">template.bitset</A>] change "Template
class" to "Class template".
</P>
<P>In 22.9.2 [<A href="https://wg21.link/template.bitset#1">template.bitset</A>] paragraph 1, change "template class"
to "class template".
</P>
<P>In the section heading of 24.5.1.2 [<A href="https://wg21.link/reverse.iterator">reverse.iterator</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 24.5.2.2 [<A href="https://wg21.link/back.insert.iterator">back.insert.iterator</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 24.5.2.3 [<A href="https://wg21.link/front.insert.iterator">front.insert.iterator</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 24.5.2.4 [<A href="https://wg21.link/insert.iterator">insert.iterator</A>] change "Template
class" to "Class template".
</P>
<P>In 24.6 [<A href="https://wg21.link/stream.iterators#1">stream.iterators</A>] paragraph 1, change "template classes"
to "class templates".
</P>
<P>In the section heading of 24.6.2 [<A href="https://wg21.link/istream.iterator">istream.iterator</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 24.6.3 [<A href="https://wg21.link/ostream.iterator">ostream.iterator</A>] [lib.ostream.iterator] change "Template
class" to "Class template".
</P>
<P>In the section heading of 24.6.4 [<A href="https://wg21.link/istreambuf.iterator">istreambuf.iterator</A>] change "Template
class" to "Class template".
</P>
<P>In 24.6.4 [<A href="https://wg21.link/istreambuf.iterator#1">istreambuf.iterator</A>] paragraph 1, change "template class"
to "class template".
</P>
<P>In the section heading of 24.6.4.2 [<A href="https://wg21.link/istreambuf.iterator.proxy">istreambuf.iterator.proxy</A>]
change "Template class" to "Class template".
</P>
<P>In the section heading of 24.6.5 [<A href="https://wg21.link/ostreambuf.iterator">ostreambuf.iterator</A>] change "Template
class" to "Class template".
</P>
<P>In 24.6.5 [<A href="https://wg21.link/ostreambuf.iterator#1">ostreambuf.iterator</A>] paragraph 1, change "template class"
to "class template".
</P>
<P>In 29.4 [<A href="https://wg21.link/eq:rand.dist.bern.bernoulli#1">eq:rand.dist.bern.bernoulli</A>] paragraph 1, change "template class"
to "class template".
</P>
<P>In the section heading of 29.4.3 [<A href="https://wg21.link/complex">complex</A>] change "Template class"
to "Class template".
</P>
<P>In 29.6.1 [<A href="https://wg21.link/valarray.syn#1">valarray.syn</A>] paragraph 1, change "template classes"
to "class templates" and change "function signatures" to "function templates".
</P>
<P>In the section heading of 29.6.2 [<A href="https://wg21.link/template.valarray">template.valarray</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 29.6.5 [<A href="https://wg21.link/template.slice.array">template.slice.array</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 29.6.7 [<A href="https://wg21.link/template.gslice.array">template.gslice.array</A>] change
"Template class" to "Class template".
</P>
<P>In the section heading of 29.6.8 [<A href="https://wg21.link/template.mask.array">template.mask.array</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 29.6.9 [<A href="https://wg21.link/template.indirect.array">template.indirect.array</A>] change
"Template class" to "Class template".
</P>
<P>In 31.3 [<A href="https://wg21.link/iostream.forward">iostream.forward</A>] [lib.iostream.forward] paragraphs 3 to 7, change "template
classes" to "class templates".
<I>[Note: Some editorial changes were made in paragraphs 2 to 8 when these
changes were applied in September 2001.]</I>
</P>
<P>In the section heading of 31.5.3 [<A href="https://wg21.link/fpos">fpos</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 31.5.4 [<A href="https://wg21.link/ios">ios</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 31.6.3 [<A href="https://wg21.link/streambuf">streambuf</A>] change "Template class"
to "Class template".
</P>
<P>In 31.6.3 [<A href="https://wg21.link/streambuf">streambuf</A>] paragraphs 2 and 3, change "template class"
to "class template".
</P>
<P>In the section heading of 31.7.5.2 [<A href="https://wg21.link/istream">istream</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 31.7.5.7 [<A href="https://wg21.link/iostreamclass">iostreamclass</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 31.7.6.2 [<A href="https://wg21.link/ostream">ostream</A>] change "Template class"
to "Class template".
</P>
<P>In 31.8 [<A href="https://wg21.link/string.streams#1">string.streams</A>] paragraph 1 change "template classes"
to "class templates".
</P>
<P>In the section heading of 31.8.2 [<A href="https://wg21.link/stringbuf">stringbuf</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 31.8.3 [<A href="https://wg21.link/istringstream">istringstream</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 31.8.5 [<A href="https://wg21.link/stringstream">stringstream</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 31.10.3 [<A href="https://wg21.link/filebuf">filebuf</A>] change "Template class"
to "Class template".
</P>
<P>In the section heading of 31.10.4 [<A href="https://wg21.link/ifstream">ifstream</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 31.10.5 [<A href="https://wg21.link/ofstream">ofstream</A>] change "Template
class" to "Class template".
</P>
<P>In the section heading of 31.10.6 [<A href="https://wg21.link/fstream">fstream</A>] change "Template
class" to "Class template".</P>

<BR><BR>
</BODY>
</HTML>
