A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FFunction%2Fgeneric_parameters</id>
		<title>C++/Function/generic parameters - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FFunction%2Fgeneric_parameters"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Function/generic_parameters&amp;action=history"/>
		<updated>2026-04-18T18:07:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Function/generic_parameters&amp;diff=1585&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Function/generic_parameters&amp;diff=1585&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Function/generic_parameters&amp;diff=1586&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Function/generic_parameters&amp;diff=1586&amp;oldid=prev"/>
				<updated>2010-05-25T10:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==A Function with Two Generic Types==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
template &amp;lt;class type1, class type2&amp;gt;&lt;br /&gt;
void myfunc(type1 x, type2 y)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  myfunc(10, &amp;quot;I like C++&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  myfunc(98.6, 19L);&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Applying Generic Functions: A Generic Bubble Sort==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
template &amp;lt;class X&amp;gt; void bubble(&lt;br /&gt;
  X *items,  // pointer to array to be sorted&lt;br /&gt;
  int count) // number of items in array&lt;br /&gt;
{&lt;br /&gt;
  register int a, b;&lt;br /&gt;
  X t;&lt;br /&gt;
   &lt;br /&gt;
  for(a=1; a&amp;lt;count; a++)&lt;br /&gt;
    for(b=count-1; b&amp;gt;=a; b--)&lt;br /&gt;
      if(items[b-1] &amp;gt; items[b]) {&lt;br /&gt;
        // exchange elements&lt;br /&gt;
        t = items[b-1];&lt;br /&gt;
        items[b-1] = items[b];&lt;br /&gt;
        items[b] = t;&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int iarray[7] = {7, 5, 4, 3, 9, 8, 6};&lt;br /&gt;
  double darray[5] = {4.3, 2.5, -0.9, 100.2, 3.0};&lt;br /&gt;
   &lt;br /&gt;
  for(int i=0;  i&amp;lt;7; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; iarray[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;
   &lt;br /&gt;
  for(int i=0;  i&amp;lt;5; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; darray[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;
   &lt;br /&gt;
  bubble(iarray, 7);&lt;br /&gt;
  bubble(darray, 5);&lt;br /&gt;
   &lt;br /&gt;
  for(int i=0;  i&amp;lt;7; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; iarray[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;
   &lt;br /&gt;
  for(int i=0;  i&amp;lt;5; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; darray[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cast generic parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class T1, class T2&amp;gt;&lt;br /&gt;
bool coerce(T1&amp;amp; x, T2 y)&lt;br /&gt;
{&lt;br /&gt;
   if (sizeof(x) &amp;lt; sizeof(y))&lt;br /&gt;
      return false;&lt;br /&gt;
   x = static_cast&amp;lt;T1&amp;gt;(y);&lt;br /&gt;
   return true;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float  x;&lt;br /&gt;
   double y;&lt;br /&gt;
   char   ch1;&lt;br /&gt;
&lt;br /&gt;
   i = &amp;quot;a&amp;quot;;   ch1 = &amp;quot;b&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ncoerce int, ch  = &amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; coerce(i, ch1);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;   i = &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;  ch1 = &amp;quot; &amp;lt;&amp;lt; ch1;&lt;br /&gt;
   i = &amp;quot;a&amp;quot;;  ch1 = &amp;quot;b&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ncoerce ch,  int = &amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; coerce(ch1, i);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;   i = &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;  ch1 = &amp;quot; &amp;lt;&amp;lt; ch1;&lt;br /&gt;
   x = 1.1;   y = 2.2;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ncoerce fl,  dbl = &amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; coerce(x, y);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;   x = &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;  y = &amp;quot; &amp;lt;&amp;lt; y;&lt;br /&gt;
   x = 1.1;  y = 2.2;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ncoerce dbl, fl  = &amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; coerce(y, x);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;   x = &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;  y = &amp;quot; &amp;lt;&amp;lt; y;&lt;br /&gt;
   cout &amp;lt;&amp;lt; endl;   cin&amp;gt;&amp;gt; i;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic Function Restrictions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
void myfunc(int i)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;value is: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
void myfunc(double d)&lt;br /&gt;
{&lt;br /&gt;
  double intpart;&lt;br /&gt;
  double fracpart;&lt;br /&gt;
   &lt;br /&gt;
  fracpart = modf(d, &amp;amp;intpart);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Fractional part: &amp;quot; &amp;lt;&amp;lt; fracpart;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Integer part: &amp;quot; &amp;lt;&amp;lt; intpart;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  myfunc(1);&lt;br /&gt;
  myfunc(12.2);&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic function template==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
template &amp;lt;class X&amp;gt; void swapargs(X &amp;amp;a, X &amp;amp;b){&lt;br /&gt;
  X temp;&lt;br /&gt;
   &lt;br /&gt;
  temp = a;&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = temp;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main(){&lt;br /&gt;
  int i=10, j=20;&lt;br /&gt;
  double x=10.1, y=23.3;&lt;br /&gt;
  char a=&amp;quot;x&amp;quot;, b=&amp;quot;z&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original a, b: &amp;quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  swapargs(i, j); // swap integers&lt;br /&gt;
  swapargs(x, y); // swap floats&lt;br /&gt;
  swapargs(a, b); // swap chars&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped a, b: &amp;quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==template for value output==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class T1, class T2&amp;gt; void sample(T1 x, T2 y);&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   sample(10, &amp;quot;hi&amp;quot;);&lt;br /&gt;
   sample(0.23, 10L);&lt;br /&gt;
   sample(&amp;quot;Jamsa&amp;quot;s&amp;quot;, &amp;quot;C/C++&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;class T1, class T2&amp;gt; void sample(T1 x, T2 y)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>