{"id":2070,"date":"2025-01-27T20:02:48","date_gmt":"2025-01-27T20:02:48","guid":{"rendered":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/?page_id=2070"},"modified":"2025-01-27T21:23:23","modified_gmt":"2025-01-27T21:23:23","slug":"default-template-parameters","status":"publish","type":"page","link":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/topics\/c-details\/function-templates-2\/default-template-parameters\/","title":{"rendered":"Default Template Parameters"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Default Template Parameters<\/h2>\n\n\n\n<p>Rather than force you always to specify the <strong>Comp<\/strong> class explicitly, it would be nice to be able to default it to the most common case.<\/p>\n\n\n\n<p>You can do this by supplying two function templates:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"padding-top:0px;padding-bottom:0px\"><code><strong>template&lt;typename T, typename C&gt;\n\tvoid sort(vector&lt;T&gt; &amp;v);\ntemplate&lt;typename T&gt;\n\tvoid sort(vector&lt;T&gt; &amp;v<\/strong>);<\/code><\/pre>\n\n\n\n<p>More conveniently, you can use <em>default template parameters<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"padding-top:0px;padding-bottom:0px\"><code><strong>template&lt;typename T, typename C = Comp&gt;\nvoid sort(vector&lt;T&gt; &amp;v);<\/strong><\/code><\/pre>\n\n\n\n<p>So, with some minor changes to a couple of files, and an additional file:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  PolicySort.h\n\/\/  Function Overload Resolution\n\/\/\n\/\/  Created by Bryan Higgs on 10\/13\/24.\n\/\/\n\n#ifndef PolicySort_h\n#define PolicySort_h\n\n#include &lt;vector&gt;\n#include &quot;PolicyCompare.h&quot;\n\ntemplate&lt;typename TYPE, typename C = Compare&gt;\nvoid sort(std::vector&lt;TYPE&gt; &amp;v)\n{\n  size_t n = v.size();\n  for (size_t i = 0; i &lt; n - 1; i++)\n  {\n    for (size_t j = n - 1; i &lt; j; j--)\n    {\n      if (C::compare(v[j], v[j - 1]) &lt; 0)\n      {  \/\/ swap v[j] and v[j-1]\n        TYPE temp = v[j];\n        v[j] = v[j-1];\n        v[j - 1] = temp;\n      }\n    }\n  }\n}\n\n#endif \/* PolicySort_h *\/\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  PolicySort.h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Function Overload Resolution<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/13\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#ifndef<\/span><span style=\"color: #0000FF\"> PolicySort_h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#define<\/span><span style=\"color: #0000FF\"> PolicySort_h<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;vector&gt;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&quot;PolicyCompare.h&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">template<\/span><span style=\"color: #000000\">&lt;<\/span><span style=\"color: #0000FF\">typename<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">TYPE<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">typename<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">C<\/span><span style=\"color: #000000\"> = Compare&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">sort<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">vector<\/span><span style=\"color: #000000\">&lt;<\/span><span style=\"color: #267F99\">TYPE<\/span><span style=\"color: #000000\">&gt; <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">size_t<\/span><span style=\"color: #000000\"> n = <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">size<\/span><span style=\"color: #000000\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #0000FF\">size_t<\/span><span style=\"color: #000000\"> i = <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">; i &lt; n - <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">; i++)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #0000FF\">size_t<\/span><span style=\"color: #000000\"> j = n - <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">; i &lt; j; j--)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      <\/span><span style=\"color: #AF00DB\">if<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #267F99\">C<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #795E26\">compare<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j], <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j - <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">]) &lt; <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      {<\/span><span style=\"color: #008000\">  \/\/ swap v[j] and v[j-1]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        TYPE temp = <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j] = <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j-<\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[j - <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">] = temp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#endif<\/span><span style=\"color: #008000\"> \/* PolicySort_h *\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  ReverseCompare.h\n\/\/  Function Overload Resolution\n\/\/\n\/\/  Created by Bryan Higgs on 10\/14\/24.\n\/\/\n\n#ifndef ReverseCompare_h\n#define ReverseCompare_h\n\nclass ReverseCompare\n{\npublic:\n  static int compare(const char *s1, const char *s2)\n  {\n    return -strcmp(s1, s2);  \/\/ reverse compare\n  }\n};\n\n#endif \/* ReverseCompare_h *\/\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  ReverseCompare.h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Function Overload Resolution<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/14\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#ifndef<\/span><span style=\"color: #0000FF\"> ReverseCompare_h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#define<\/span><span style=\"color: #0000FF\"> ReverseCompare_h<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">class<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">ReverseCompare<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">public:<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">compare<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #001080\">s1<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #001080\">s2<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  {<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">    <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> -<\/span><span style=\"color: #795E26\">strcmp<\/span><span style=\"color: #000000\">(s1, s2);<\/span><span style=\"color: #008000\">  \/\/ reverse compare<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  }<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#endif<\/span><span style=\"color: #008000\"> \/* ReverseCompare_h *\/<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  PolicySort.cpp\n\/\/  Function Overload Resolution\n\/\/\n\/\/  Created by Bryan Higgs on 10\/13\/24.\n\/\/\n\n#include &lt;iostream&gt;\n#include &quot;PolicySort.h&quot;\n#include &quot;ReverseCompare.h&quot;\n\nvoid printVector(std::vector&lt;const char *&gt; v)\n{\n  for(int i = 0; i &lt; v.size(); i++)\n    std::cout &lt;&lt; ' ' &lt;&lt; v[i] &lt;&lt; std::endl;\n}\n\nint main()\n{\n  std::vector&lt;const char *&gt; vstrs(10);\n  \n  vstrs[0] = &quot;Vera&quot;;\n  vstrs[1] = &quot;mary&quot;;\n  vstrs[2] = &quot;fred&quot;;\n  vstrs[3] = &quot;Zena&quot;;\n  vstrs[4] = &quot;Algernon&quot;;\n  vstrs[5] = &quot;carol&quot;;\n  vstrs[6] = &quot;alan&quot;;\n  vstrs[7] = &quot;Richard&quot;;\n  vstrs[8] = &quot;Beatrice&quot;;\n  vstrs[9] = &quot;xavier&quot;;\n\n  std::cout &lt;&lt; &quot;Before sorting: &quot; &lt;&lt; std::endl;\n  printVector(vstrs);\n\n  sort&lt;const char *&gt;(vstrs);\n    \n  std::cout &lt;&lt; &quot;After sorting: &quot; &lt;&lt; std::endl;\n  printVector(vstrs);\n  \n  sort&lt;const char *, ReverseCompare&gt;(vstrs);\n    \n  std::cout &lt;&lt; &quot;After reverse sorting: &quot; &lt;&lt; std::endl;\n  printVector(vstrs);\n\n  return 0;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  PolicySort.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Function Overload Resolution<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/13\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&quot;PolicySort.h&quot;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&quot;ReverseCompare.h&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">printVector<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">vector<\/span><span style=\"color: #000000\">&lt;<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *&gt; <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> i = <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">; i &lt; <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">size<\/span><span style=\"color: #000000\">(); i++)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&#39; &#39;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #001080\">v<\/span><span style=\"color: #000000\">[i] &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">main<\/span><span style=\"color: #000000\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::vector&lt;<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *&gt; <\/span><span style=\"color: #795E26\">vstrs<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #098658\">10<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;Vera&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;mary&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">2<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;fred&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">3<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;Zena&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">4<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;Algernon&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">5<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;carol&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">6<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;alan&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">7<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;Richard&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">8<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;Beatrice&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">vstrs<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">9<\/span><span style=\"color: #000000\">] = <\/span><span style=\"color: #A31515\">&quot;xavier&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;Before sorting: &quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printVector<\/span><span style=\"color: #000000\">(vstrs);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">sort<\/span><span style=\"color: #000000\">&lt;<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *&gt;(vstrs);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;After sorting: &quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printVector<\/span><span style=\"color: #000000\">(vstrs);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">sort<\/span><span style=\"color: #000000\">&lt;<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *, <\/span><span style=\"color: #267F99\">ReverseCompare<\/span><span style=\"color: #000000\">&gt;(vstrs);<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;After reverse sorting: &quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printVector<\/span><span style=\"color: #000000\">(vstrs);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<p>Which produces the following output:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"padding-top:0px;padding-bottom:0px\"><code><strong>Before sorting: \n Vera\n mary\n fred\n Zena\n Algernon\n carol\n alan\n Richard\n Beatrice\n xavier\nAfter sorting: \n Algernon\n Beatrice\n Richard\n Vera\n Zena\n alan\n carol\n fred\n mary\n xavier\nAfter reverse sorting: \n xavier\n mary\n fred\n carol\n alan\n Zena\n Vera\n Richard\n Beatrice\n Algernon\nProgram ended with exit code: 0<\/strong><\/code><\/pre>\n\n\n\n<div style=\"height:47px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-font-size has-medium-font-size\"><a class=\"wp-block-button__link has-palette-color-8-color has-text-color has-link-color wp-element-button\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/topics\/c-details\/function-templates-2\/template-value-parameter-usage\/\">Next: Template Value Parameter Usage<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Default Template Parameters Rather than force you always to specify the Comp class explicitly, it would be nice to be able to default it to the most common case. You can do this by supplying two function templates: More conveniently, you can use default template parameters: So, with some minor changes to a couple of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2029,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2070","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/2070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/comments?post=2070"}],"version-history":[{"count":4,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/2070\/revisions"}],"predecessor-version":[{"id":2099,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/2070\/revisions\/2099"}],"up":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/2029"}],"wp:attachment":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/media?parent=2070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}