{"id":8583,"date":"2022-09-14T11:56:55","date_gmt":"2022-09-14T06:26:55","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/"},"modified":"2022-09-14T11:56:55","modified_gmt":"2022-09-14T06:26:55","slug":"solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/","title":{"rendered":"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-20927467\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"20927467\" data-parentid=\"20927161\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>It&#8217;s quite common, actually almost all templates have certain requirements towards their arguments. Those are usually implicitly clear from how the template parameter is used, but you can improve the error messages by using <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/types\">type traits<\/a>. In C++11, they are available from the standard library via <code>#include &lt;type_traits&gt;<\/code>, otherwise look into <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/www.boost.org\/doc\/libs\/1_55_0\/libs\/type_traits\/doc\/html\/index.html\">Boost.TypeTraits<\/a>.<\/p>\n<p>With C++11, the usage is quite simple when you also use <code>static_assert<\/code>:<\/p>\n<pre><code>template&lt; typename T &gt;\nstd::shared_ptr&lt; T &gt; spawn()\n{\n    \/\/ make this the first line in your function to get errors early.\n    \/\/ also note that you can use any compile-time check you like.\n    static_assert( std::is_base_of&lt; Monster, T &gt;::value,\n                   \"T is not derived from Monster\" );\n\n    \/\/ the rest of your code follows here.\n    \/\/ ...\n    \/\/ return ...;\n}\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] It&#8217;s quite common, actually almost all templates have certain requirements towards their arguments. Those are usually implicitly clear from how the template parameter is used, but you can improve the error messages by using type traits. In C++11, they are available from the standard library via #include &lt;type_traits&gt;, otherwise look into Boost.TypeTraits. With C++11, &#8230; <a title=\"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\" aria-label=\"More on [Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,435],"class_list":["post-8583","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-templates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Is it considered &quot;correct&quot; to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Is it considered &quot;correct&quot; to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] It&#8217;s quite common, actually almost all templates have certain requirements towards their arguments. Those are usually implicitly clear from how the template parameter is used, but you can improve the error messages by using type traits. In C++11, they are available from the standard library via #include &lt;type_traits&gt;, otherwise look into Boost.TypeTraits. With C++11, ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-14T06:26:55+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?\",\"datePublished\":\"2022-09-14T06:26:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\"},\"wordCount\":107,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"templates\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\",\"name\":\"[Solved] Is it considered \\\"correct\\\" to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-14T06:26:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Is it considered \"correct\" to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Is it considered \"correct\" to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb","og_description":"[ad_1] It&#8217;s quite common, actually almost all templates have certain requirements towards their arguments. Those are usually implicitly clear from how the template parameter is used, but you can improve the error messages by using type traits. In C++11, they are available from the standard library via #include &lt;type_traits&gt;, otherwise look into Boost.TypeTraits. With C++11, ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/","og_site_name":"JassWeb","article_published_time":"2022-09-14T06:26:55+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?","datePublished":"2022-09-14T06:26:55+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/"},"wordCount":107,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","templates"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/","url":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/","name":"[Solved] Is it considered \"correct\" to use a template for a function\/class that only accepts subclasses of a specific class? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-14T06:26:55+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-considered-correct-to-use-a-template-for-a-function-class-that-only-accepts-subclasses-of-a-specific-class\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Is it considered &#8220;correct&#8221; to use a template for a function\/class that only accepts subclasses of a specific class?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/8583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=8583"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/8583\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=8583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=8583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=8583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}