{"id":2437,"date":"2022-02-11T18:45:39","date_gmt":"2022-02-11T18:45:39","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2437"},"modified":"2022-02-11T18:45:39","modified_gmt":"2022-02-11T18:45:39","slug":"haftalik-c-45-variable-templates","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/","title":{"rendered":"Haftal\u0131k C++ 45 &#8211; Variable Templates"},"content":{"rendered":"<p>C++ yaz\u0131lar\u0131m\u0131za devam ediyoruz. C++ 14 ile sunulan ve a\u00e7\u0131k\u00e7as\u0131 benim daha \u00f6nce hi\u00e7 kullanmad\u0131\u011f\u0131m (muhtemelen bir s\u00fcre de kullanmayaca\u011f\u0131m) ama kabiliyetlerin b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan de\u011finece\u011fim bir konu var, o da de\u011fi\u015fken \u015fablonlar (Variable template). Bundan \u00f6nceki yaz\u0131lar\u0131mda &#8220;variadic templates&#8221; &#8216;a de\u011finmi\u015ftim onlara da bir g\u00f6z atman\u0131zda fayda var (&#8220;variadic&#8221; ile &#8220;variable&#8221; terimlerini a\u00e7\u0131k bir \u015fekilde ifade edecek terim bulamad\u0131\u011f\u0131mda, de\u011fi\u015fken olarak kullanaca\u011f\u0131m). Hemen buraya bir ba\u011flant\u0131 ekliyorum:<\/p>\n<p><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/04\/27\/haftalik-c-37-degisken-sablonlar-variadic-templates\/\">Haftal\u0131k C++ 37 &#8211; Variadic Templates<\/a><\/span><\/strong><\/p>\n<p>Bu mekanizmalar, \u00f6zellikle &#8220;template metaprogramming&#8221; yap\u0131yorsan\u0131z i\u015finizi kolayla\u015ft\u0131racakt\u0131r.<\/p>\n<p>A\u00e7\u0131k\u00e7as\u0131 ben de buna g\u00f6z att\u0131ktan sonra, \u00f6zellikle performans kritik kabiliyetler i\u00e7in ihtiya\u00e7 duyabilece\u011finiz bir tak\u0131m hesaplamalar\u0131 derleme zaman\u0131nda yapman\u0131za yard\u0131mc\u0131 olacak bir kabiliyet oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyorum.<\/p>\n<p>\u015eimdi gelelim kabiliyete, bu kabiliyeti , g\u00f6rd\u00fc\u011f\u00fcm kadar\u0131yla en g\u00fczel ve \u00f6zet \u015fekilde referans dok\u00fcman sayfas\u0131 anlatm\u0131\u015f. \u015e\u00f6yle ki, de\u011fi\u015fken \u015fablonlar, bir de\u011fi\u015fkenler ailesi ya da statik veri \u00fcyelerini tan\u0131mlamas\u0131n\u0131 sa\u011fl\u0131yor. Bu da nerede tan\u0131mland\u0131\u011f\u0131na g\u00f6re de\u011fi\u015fiyor. Genel format a\u015fa\u011f\u0131daki gibi oluyor:<\/p>\n<p><strong>template &lt; parameter-list &gt; variable-declaration<\/strong><\/p>\n<p>E\u011fer s\u0131n\u0131f kapsam\u0131 d\u0131\u015f\u0131nda, isim uzay\u0131 d\u0131\u015f\u0131nda tan\u0131mlan\u0131rsa ise de\u011fi\u015fken ailesi tan\u0131mlar. Hemen \u00f6rne\u011fe bakal\u0131m.<\/p>\n<pre class=\"lang:c++ decode:true \">template&lt;class T&gt;\r\nconstexpr T pi = T(3.1415926535897932385L);\u00a0 \/\/ de\u011fi\u015fken \u015fablonumuz<\/pre>\n<p>yukar\u0131daki tan\u0131mlama ile bir pi de\u011fi\u015fken \u015fablonu tan\u0131mlam\u0131\u015f olduk. Peki bunun kullan\u0131m\u0131 nedir? Hemen ona da bakal\u0131m. A\u015fa\u011f\u0131da da bunun kullan\u0131m\u0131na ili\u015fkin \u00f6rne\u011fi g\u00f6r\u00fcyoruz:<\/p>\n<pre class=\"lang:c++ decode:true \">template&lt;class T&gt;\r\nT CalculateCircularArea(T r) \/\/ fonksiyon \u015fablonu\r\n{\r\n     return pi&lt;T&gt; * r * r; \/\/ pi&lt;T&gt; \u015fablon de\u011fi\u015fkeninin kullan\u0131m\u0131\r\n}<\/pre>\n<p>bu \u00f6rnekte de g\u00f6rebilece\u011finiz gibi, yukar\u0131daki tan\u0131mlama ile birlikte, pi de\u011fi\u015fkeni (daha do\u011frusu de\u011fi\u015fken \u015fablon ailesi) farkl\u0131 tipler i\u00e7in di\u011fer \u015fablonlarda kullanabiliyoruz. \u015e\u00f6yle ifade edelim. \u0130lk yapt\u0131\u011f\u0131m\u0131z, tan\u0131mlamada direk bir tip vermedik, fakat bu tipi hem int hem de double hem de benzeri tipler i\u00e7in di\u011fer \u015fablonar i\u00e7erisinde kullanabilirsiniz. Yukar\u0131daki alan hesaplama da bunun bir \u00f6rne\u011fi.<\/p>\n<p>Fakat, di\u011fer \u015fablonlarda oldu\u011fu gibi, tan\u0131mlayaca\u011f\u0131n\u0131z her tip i\u00e7in derleyici bir tan\u0131mlama ekliyor olacak.<\/p>\n<p>E\u011fer de\u011fi\u015fken \u015fablon s\u0131n\u0131f kapsam\u0131 i\u00e7erisinde tan\u0131mlan\u0131rsa bu statik veri \u00fcyesi \u015fablonu tan\u0131mlamaktad\u0131r. Hemen referans sayfas\u0131ndaki \u00f6rne\u011fe bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true \">using namespace std::literals;\r\nstruct MatrixConstants\r\n{\r\n     template&lt;class T&gt;\r\n     using pauli = hermitian_matrix&lt;T, 2&gt;; \/\/ alias template\r\n\r\n     template&lt;class T&gt; \/\/ Bu da statik \u00fcye \u00f6rne\u011fi\r\n     static constexpr pauli&lt;T&gt; sigmaX = { { 0, 1 }, { 1, 0 } };\r\n\r\n     template&lt;class T&gt;\r\n     static constexpr pauli&lt;T&gt; sigmaY = { { 0, -1i }, { 1i, 0 } };\r\n\r\n     template&lt;class T&gt;\r\n     static constexpr pauli&lt;T&gt; sigmaZ = { { 1, 0 }, { 0, -1 } };\r\n};<\/pre>\n<p>yukar\u0131daki \u00f6rnekte de asl\u0131nda s\u0131n\u0131f i\u00e7erisinde kullan\u0131ma y\u00f6nelik bir de\u011fi\u015fken tan\u0131ml\u0131yoruz ve daha sonra, bu tan\u0131mlama ile statik veri \u00fcyeleri tan\u0131mlayabiliyoruz. Tabi b\u00fct\u00fcn bunlar\u0131n derleme zaman\u0131nda ger\u00e7ekle\u015fti\u011fini san\u0131r\u0131m hat\u0131rlatmama gerek yok.<\/p>\n<p>Hala benimle misiniz? \u015eimdi biraz daha farkl\u0131 bir \u00f6rne\u011fe bakal\u0131m :<\/p>\n<pre class=\"lang:c++ decode:true\">template&lt;typename T&gt;\r\nT CompileTimeVariable = T(20);\r\n\r\nint main()\r\n{\r\n    CompileTimeVariable &lt;int&gt; = 10;                  \/\/ Art\u0131k int tipindeki bu de\u011fi\u015fken 10\r\n    std::cout &lt;&lt; CompileTimeVariable&lt;int&gt;    &lt;&lt; \" \"; \/\/ \u00c7\u0131kt\u0131: 10\r\n    std::cout &lt;&lt; CompileTimeVariable&lt;double&gt; &lt;&lt; \" \"; \/\/ \u00c7\u0131kt\u0131: 20.0\r\n}<\/pre>\n<p>Burada da, ilk pi \u00f6rne\u011findeki kullan\u0131m yan\u0131nda, de\u011fi\u015fken \u015fablonlar ile, her bir tip icin de\u011fi\u015fkenin nas\u0131l tan\u0131mlanabildi\u011fine \u015fahit oluyorsunuz.<\/p>\n<p>Peki daha ba\u015fka ne i\u00e7in bu kabiliyeti kullanabiliriz diye bakt\u0131\u011f\u0131n\u0131zda, &#8220;variadic template&#8221; ile \u00e7ok ilgin\u00e7 ve faydal\u0131 kullan\u0131mlara \u015fahit olabiliyoruz. Bunlardan birisi de, derleme zaman\u0131nda trigonometrik \u00e7\u0131kt\u0131lar\u0131n tabloda tutulmas\u0131 (eskiden ben de kaynak kritik bir ka\u00e7 uygulamamda bu tablolar\u0131 olu\u015fturup kullanm\u0131\u015ft\u0131m). \u0130lgilenenleri a\u015fa\u011f\u0131daki sayfaya alabiliriz:<\/p>\n<p><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/accu.org\/journals\/overload\/23\/126\/sommerlad_2087\/\"><strong>https:\/\/accu.org\/journals\/overload\/23\/126\/sommerlad_2087\/<\/strong><\/a><\/span><\/p>\n<p>Hem referans sayfa da hem de di\u011fer kaynaklarda da ifade edildi\u011fi \u00fczere, C++ 14 \u00f6ncesinde de burada sunuluna kabiliyetler bir \u015fekilde sa\u011flanabiliyordu (statik veriler ve constexpr fonksiyonlar) ama C++ 14 ile sunulan bu kabiliyet ile birlikte bu daha kolay ve okunabilir bir \u015fekilde ger\u00e7ekle\u015ftirebilmekte.<\/p>\n<p>Bu kabiliyete,\u00a0 arkas\u0131ndaki motivasyona ve daha detayl\u0131 \u00f6rneklere g\u00f6z atmak isterseniz <strong><span style=\"color: #008000;\">http:\/\/isocpp.org\/files\/papers\/N3651.pdf<\/span> <\/strong>dok\u00fcman\u0131na bir g\u00f6z atabilirsiniz.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle kendinize iyi bak\u0131n, bol kodlu g\u00fcnler diliyorum.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/variable_template\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/variable_template<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/accu.org\/journals\/overload\/23\/126\/sommerlad_2087\/\"><span style=\"color: #008000;\"><strong>https:\/\/accu.org\/journals\/overload\/23\/126\/sommerlad_2087\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"http:\/\/isocpp.org\/files\/papers\/N3651.pdf\"><span style=\"color: #008000;\"><strong>http:\/\/isocpp.org\/files\/papers\/N3651.pdf<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=2kY-go52rNwd\"><span style=\"color: #008000;\"><strong>https:\/\/www.youtube.com\/watch?v=2kY-go52rNwd<\/strong><\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>C++ yaz\u0131lar\u0131m\u0131za devam ediyoruz. C++ 14 ile sunulan ve a\u00e7\u0131k\u00e7as\u0131 benim daha \u00f6nce hi\u00e7 kullanmad\u0131\u011f\u0131m (muhtemelen bir s\u00fcre de kullanmayaca\u011f\u0131m) ama kabiliyetlerin b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan de\u011finece\u011fim bir konu var, o da de\u011fi\u015fken \u015fablonlar (Variable template). Bundan \u00f6nceki yaz\u0131lar\u0131mda &#8220;variadic templates&#8221; &#8216;a de\u011finmi\u015ftim onlara da bir g\u00f6z atman\u0131zda fayda var (&#8220;variadic&#8221; ile &#8220;variable&#8221; terimlerini a\u00e7\u0131k bir \u015fekilde&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41],"tags":[398,954,858],"class_list":["post-2437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","tag-c-14","tag-variable-templates","tag-variadic-templates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/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:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"C++ yaz\u0131lar\u0131m\u0131za devam ediyoruz. C++ 14 ile sunulan ve a\u00e7\u0131k\u00e7as\u0131 benim daha \u00f6nce hi\u00e7 kullanmad\u0131\u011f\u0131m (muhtemelen bir s\u00fcre de kullanmayaca\u011f\u0131m) ama kabiliyetlerin b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan de\u011finece\u011fim bir konu var, o da de\u011fi\u015fken \u015fablonlar (Variable template). Bundan \u00f6nceki yaz\u0131lar\u0131mda &#8220;variadic templates&#8221; &#8216;a de\u011finmi\u015ftim onlara da bir g\u00f6z atman\u0131zda fayda var (&#8220;variadic&#8221; ile &#8220;variable&#8221; terimlerini a\u00e7\u0131k bir \u015fekilde... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-11T18:45:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png\" \/>\n\t<meta property=\"og:image:width\" content=\"32\" \/>\n\t<meta property=\"og:image:height\" content=\"32\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 45 &#8211; Variable Templates\",\"datePublished\":\"2022-02-11T18:45:39+00:00\",\"dateModified\":\"2022-02-11T18:45:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\"},\"wordCount\":700,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"C++ 14\",\"variable templates\",\"variadic templates\"],\"articleSection\":[\"C++\",\"Modern C++\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\",\"name\":\"Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2022-02-11T18:45:39+00:00\",\"dateModified\":\"2022-02-11T18:45:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 45 &#8211; Variable Templates\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","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:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"C++ yaz\u0131lar\u0131m\u0131za devam ediyoruz. C++ 14 ile sunulan ve a\u00e7\u0131k\u00e7as\u0131 benim daha \u00f6nce hi\u00e7 kullanmad\u0131\u011f\u0131m (muhtemelen bir s\u00fcre de kullanmayaca\u011f\u0131m) ama kabiliyetlerin b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan de\u011finece\u011fim bir konu var, o da de\u011fi\u015fken \u015fablonlar (Variable template). Bundan \u00f6nceki yaz\u0131lar\u0131mda &#8220;variadic templates&#8221; &#8216;a de\u011finmi\u015ftim onlara da bir g\u00f6z atman\u0131zda fayda var (&#8220;variadic&#8221; ile &#8220;variable&#8221; terimlerini a\u00e7\u0131k bir \u015fekilde... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2022-02-11T18:45:39+00:00","og_image":[{"width":32,"height":32,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"4 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 45 &#8211; Variable Templates","datePublished":"2022-02-11T18:45:39+00:00","dateModified":"2022-02-11T18:45:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/"},"wordCount":700,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["C++ 14","variable templates","variadic templates"],"articleSection":["C++","Modern C++"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/","name":"Haftal\u0131k C++ 45 - Variable Templates - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2022-02-11T18:45:39+00:00","dateModified":"2022-02-11T18:45:39+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/11\/haftalik-c-45-variable-templates\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 45 &#8211; Variable Templates"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=2437"}],"version-history":[{"count":5,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2437\/revisions"}],"predecessor-version":[{"id":2503,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2437\/revisions\/2503"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/174"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}