{"id":2467,"date":"2022-02-28T21:00:54","date_gmt":"2022-02-28T21:00:54","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2467"},"modified":"2022-02-28T21:00:54","modified_gmt":"2022-02-28T21:00:54","slug":"haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/","title":{"rendered":"Haftal\u0131k C++ 46 &#8211; constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131"},"content":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m,<\/p>\n<p>C++ 14 yaz\u0131lar\u0131m\u0131za devam ediyoruz. Bu yaz\u0131mda, mevcut kabiliyetlere yap\u0131lan bir tak\u0131m ekleme mahiyetindeki \u00f6zelli\u011fe g\u00f6z at\u0131yor olaca\u011f\u0131z. Her ne kadar, \u00e7ok s\u0131k kullanaca\u011f\u0131n\u0131z ya da muhakkak ihtiyac\u0131n\u0131z olacak kabiliyetler olmasa da, yine de faydal\u0131 olaca\u011f\u0131na inan\u0131yorum. O zaman daha fazla oyalanmadan bunlara bir g\u00f6z atal\u0131m.<\/p>\n<h2><strong><span style=\"color: #0000ff;\">constexpr fonksiyonlara ili\u015fkin g\u00fcncellemeler<\/span><\/strong><\/h2>\n<p>constexpr fonksiyonlara ili\u015fkin g\u00fcncellemelere de\u011finmeden \u00f6nce elbette C++ 11 ile sunulan kabiliyetlere bakmakta fayda var. Daha detayl\u0131 bir hat\u0131rlama i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ma g\u00f6z atabilirsiniz. Bu yaz\u0131m i\u00e7erisinde constexpr fonksiyonlar yan\u0131nda, di\u011fer tan\u0131mlamalara ve k\u0131s\u0131tlara de\u011finmi\u015ftim.<\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/01\/28\/modern-c-3-uniform-initialization-overridefinal-defaultdelete-constexpr-vb\/\">Modern C++ (3): Uniform Initialization, override\/final, default\/delete, constexpr, vb.<\/a><\/strong><\/span><\/p>\n<p>\u00d6zetleyecek olursak. constexpr fonksiyonlar bize derleme zaman\u0131nda ko\u015fturulabilen ve hesaplamalar\u0131 da derleme zaman\u0131nda yapman\u0131za olanak sa\u011flayan bir mekanizma sunmaktad\u0131r.<\/p>\n<p>Peki, bu kabiliyete ili\u015fkin C++ 11&#8217;deki k\u0131s\u0131tlar neydi? Bir kere virtual olamaz, muhakak arg\u00fcman i\u00e7ermeli, d\u00f6n\u00fc\u015f de\u011feri, constexpr tan\u0131mlamalar ile kullan\u0131labilen &#8220;literal type&#8221; olmal\u0131d\u0131r. Tek bir d\u00f6n\u00fc\u015f ifadesi olmal\u0131d\u0131r. Ko\u015ful ya da d\u00f6ng\u00fc ifadeleri de i\u00e7eremez (ko\u015ful (&#8220;Ternary&#8221;) operat\u00f6r\u00fc ile ko\u015ful k\u0131sm\u0131n\u0131 halledebiliyorduk ger\u00e7i ama peki \u015f\u0131k olmayabilirdi).<\/p>\n<p>Hemen bir \u00f6rne\u011fe g\u00f6z atal\u0131m isterseniz:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;iostream&gt;\r\n\r\nconstexpr int Multiply(int x, int y)\r\n{\r\n    return (x * y);\r\n}\r\n  \r\nint main()\r\n{\r\n    const int x = Multiply(10, 20);\r\n    std::cout &lt;&lt; x;\r\n    return 0;\r\n}<\/pre>\n<p>Yukar\u0131daki \u00f6rnekte verilen fonksiyon ile \u00e7arpma i\u015flemlerini derleme zaman\u0131nda yapabiliyoruz. Gelelim C++ 14&#8217;e.<\/p>\n<p>C++ 14 ile birlikte art\u0131k a\u015fa\u011f\u0131dakileri de yapabiliyoruz:<\/p>\n<ul>\n<li>Fonksiyon i\u00e7erisinde statik ve ilklendirilmemi\u015f de\u011fi\u015fkenler d\u0131\u015f\u0131nda, de\u011fi\u015fken tan\u0131mlama,<\/li>\n<li>if ve switch ko\u015ful kontrolleri (goto kullanam\u0131yorsunuz),<\/li>\n<li>D\u00f6ng\u00fcler (for, while, do-while ve range-based),<\/li>\n<li>Birden fazla ifade kullan\u0131m\u0131,<\/li>\n<li>Ba\u015fka constexpr fonksiyon kullan\u0131m\u0131.<\/li>\n<\/ul>\n<p>\u015eimdi hemen C++ 14 ile sunulan bu \u00f6zelli\u011fe ili\u015fkin bir \u00f6rne\u011fe bakal\u0131m. Bunun i\u00e7in de fakt\u00f6ryel hesaplayan bir fonksiyonu inceleyelim.<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n\r\nconstexpr int CalculateFactorial(int n) {\r\n    int value = 1;\r\n    do {\r\n        value *= n; \r\n    } while (--n);\r\n    \r\n    return value;\r\n}\r\n\r\nint main() {\r\n    \/\/ auto result = CalculateFactorial(5);\r\n    constexpr auto result = CalculateFactorial(5);\r\n    std::cout &lt;&lt; \"Derleme Zaman\u0131 Sonucu: \" &lt;&lt; result &lt;&lt; std::endl;\r\n}<\/pre>\n<p>Yukar\u0131daki kodu <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/cpp.sh\/\">C++ 11 derleyicisi<\/a> <\/strong><\/span>ile derledi\u011finizde, a\u015fa\u011f\u0131daki hatay\u0131 ya da benzerini al\u0131rs\u0131n\u0131z:<\/p>\n<pre class=\"lang:c++ decode:true\"> In function 'constexpr int CalculateFactorial(int)':\r\n10:1: error: body of constexpr function 'constexpr int CalculateFactorial(int)' not a return-statement\r\n In function 'int main()':\r\n13:49: error: 'constexpr int CalculateFactorial(int)' called in a constant expression<\/pre>\n<p>\u015eimdi ayn\u0131 kodu C++ 14 derleyicisinde derleyin ve sonucu g\u00f6r\u00fcn ki bu 120 olmal\u0131.<\/p>\n<p>Burada, ilgili kod tamamen derleme zaman\u0131nda hesaplanmaktad\u0131r. Peki bu b\u00fct\u00fcn constexpr fonksiyonlar i\u00e7in ge\u00e7erli mi?<\/p>\n<p>Elbette hay\u0131r. Burada dikkat edilmesi gereken husus, <strong>ge\u00e7irilen parametrelerin<\/strong> const olmas\u0131 ve <strong>d\u00f6n\u00fc\u015f de\u011ferinin<\/strong> de yine ayn\u0131 \u015fekilde const bir ifade de kullan\u0131lmas\u0131d\u0131r. Arkada neler d\u00f6nd\u00fc\u011f\u00fcn\u00fc g\u00f6rmek i\u00e7in yukar\u0131daki kodu &#8220;<strong><a href=\"https:\/\/gcc.godbolt.org\/#\"><span style=\"color: #008000;\">Compiler Explorer<\/span>&#8220;<\/a><\/strong>&#8216;a aktar\u0131p, \u00f6nce mevcut hali ile sonra da, yorumlu k\u0131sm\u0131 a\u00e7\u0131p, alt sat\u0131r\u0131 yoruma alarak g\u00f6rebilirsiniz \ud83d\ude09<\/p>\n<p>Bu kabiliyete ili\u015fkin yap\u0131lan de\u011fi\u015fiklikleri daha detayl\u0131 g\u00f6rmek i\u00e7in, kaynaklar k\u0131sm\u0131na ekledi\u011fim ve <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/isocpp.org\/files\/papers\/N3652.html\">de\u011fi\u015fiklikleri a\u00e7\u0131k bir \u015fekilde g\u00f6steren dok\u00fcmana<\/a><\/strong> <\/span>da g\u00f6z atabilirsiniz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f\u00fc tipi \u00e7\u0131kar\u0131m\u0131 (Return type deduction)<\/strong><\/span><\/h2>\n<p>C++ 14 ile iyile\u015ftirme sa\u011flanan bir di\u011fer kabiliyet de, fonksiyonlar\u0131n d\u00f6n\u00fc\u015f de\u011ferinin \u00e7\u0131kar\u0131lmas\u0131. Bunu dedi\u011fimde akl\u0131n\u0131zda hemen \u015f\u00f6yle bir soru belirmi\u015f olabilir: C++ 11 ile bunu nas\u0131l sa\u011fl\u0131yorduk? \u00d6ncelikle elbette C++ 14&#8217;\u00fcn sundu\u011fu kadar kolay ve temiz \u015fekilde olmasada, bir seviyede sa\u011flanmaktayd\u0131. Bu da, lambda ve template fonksiyonlar\u0131 ile sa\u011flan\u0131yordu. \u00d6nce lambda fonksiyonlara bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true \">\/\/ C++11'de ge\u00e7erli\r\n[=] { return func() * 42; }<\/pre>\n<p>Bir di\u011fer \u00f6rnek kullan\u0131m da, template fonksiyonlar arac\u0131l\u0131\u011f\u0131 ile oluyordu. Fakat d\u00f6n\u00fc\u015f de\u011ferini belirlemek i\u00e7in a\u015fa\u011f\u0131daki gibi bir takla atman\u0131z gerekiyordu:<\/p>\n<pre class=\"lang:c++ decode:true \">template &lt;typename A, typename B&gt; \r\nauto exampleFunc(const A&amp; left, const B&amp; right) -&gt; decltype(left.exampleFunc(right)) { \r\n      return left.exampleFunc(right); \r\n}<\/pre>\n<p>bir di\u011fer ifade ile, d\u00f6n\u00fc\u015f de\u011ferini derleyiciye s\u00f6ylemek i\u00e7in &#8220;decltype&#8221; ibaresini kullanman\u0131z gerekiyor. Peki, bunu C++ 14 ile art\u0131k nas\u0131l yapabiliyoruz? Eminim hepiniz tahmin etmi\u015fsinizdir:<\/p>\n<pre class=\"lang:c++ decode:true \">template &lt;typename A, typename B&gt; \r\nauto exampleFunc(const A&amp; left, const B&amp; right) { \r\n      return left.exampleFunc(right); \r\n}<\/pre>\n<p>Tabi ki bu \u00f6zellik sadece template fonksiyonlar i\u00e7in ge\u00e7erli de\u011fil, normal fonksiyonlar i\u00e7in de bunu kullanabiliyoruz ve dahi recursive fonksiyonlar\u0131 da bu \u015fekilde tan\u0131mlayabiliyoruz. Hemen basit \u00f6rneklere bir g\u00f6z atal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true\">\/\/ f int d\u00f6n\u00fcyor \r\nauto f() { return 42; }\r\n\r\n \/\/ g hi\u00e7 bir \u015fey d\u00f6nm\u00fcyor yani void \r\nauto g() { std::cout &lt;&lt; \"Merhaba dunya!\\n\"; } \r\n\r\n\/\/ h std::string d\u00f6n\u00fcyor \r\nauto h() { return \"Merhaba dunya!\"; }<\/pre>\n<p>Tabi bir tak\u0131m k\u0131s\u0131tlamalar da yok de\u011fil:<\/p>\n<ul>\n<li>\u00d6ncelikle d\u00f6n\u00fc\u015f de\u011feri auto olan fonksiyon i\u00e7erisindeki b\u00fct\u00fcn d\u00f6n\u00fc\u015f de\u011ferleri ayn\u0131 tip olmal\u0131d\u0131r.\n<ul>\n<li>\n<pre class=\"lang:c++ decode:true line-numbers language-cpp \">A\u015fa\u011f\u0131daki kullan\u0131m ge\u00e7erli bir kullan\u0131m de\u011fil:\r\nauto someFunc(bool b) { \r\n     if (b) \r\n         return 5; \/\/ int d\u00f6n\u00fcyor \r\n     else \r\n         return 6.7; \/\/ double d\u00f6n\u00fcyor, neler oluyor burada !?? \r\n}<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>Recursive fonksiyon tan\u0131mlamalar\u0131nda da, recursive \u00e7a\u011fr\u0131 \u00f6ncesinde, bir d\u00f6n\u00fc\u015f yapman\u0131z gerekiyor ama bu \u00e7ok da zor olmasa gerek \ud83d\ude09\n<ul>\n<li>\n<pre class=\"lang:c++ decode:true \">auto factorial(int N) {\r\n    \/\/ Eger bu donus ifadesi sonra gelseydi asagidaki kod derlenmezdi\r\n    if(N == 0 || N == 1)\r\n        return 1;\r\n    return N * factorial (N \u2013 1);\r\n}<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m bir C++ yaz\u0131m\u0131z\u0131n daha sonuna geldik, bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle bol kodlu g\u00fcnler diliyorum hepinize.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/isocpp.org\/files\/papers\/N3652.html\"><span style=\"color: #008000;\"><strong>https:\/\/isocpp.org\/files\/papers\/N3652.html<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/understanding-constexper-specifier-in-c\/\"><span style=\"color: #008000;\"><strong>https:\/\/www.geeksforgeeks.org\/understanding-constexper-specifier-in-c\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/function#Return_type_deduction_.28since_C.2B.2B14.29\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/function#Return_type_deduction_.28since_C.2B.2B14.29<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/return-type-deduction-in-c14-with-examples\/\"><span style=\"color: #008000;\"><strong>https:\/\/www.geeksforgeeks.org\/return-type-deduction-in-c14-with-examples\/<\/strong><\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ 14 yaz\u0131lar\u0131m\u0131za devam ediyoruz. Bu yaz\u0131mda, mevcut kabiliyetlere yap\u0131lan bir tak\u0131m ekleme mahiyetindeki \u00f6zelli\u011fe g\u00f6z at\u0131yor olaca\u011f\u0131z. Her ne kadar, \u00e7ok s\u0131k kullanaca\u011f\u0131n\u0131z ya da muhakkak ihtiyac\u0131n\u0131z olacak kabiliyetler olmasa da, yine de faydal\u0131 olaca\u011f\u0131na inan\u0131yorum. O zaman daha fazla oyalanmadan bunlara bir g\u00f6z atal\u0131m. constexpr fonksiyonlara ili\u015fkin g\u00fcncellemeler constexpr&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\">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":[13,46,398,69,962,964,42,963,965,857],"class_list":["post-2467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","tag-c","tag-c-11","tag-c-14","tag-constexpr","tag-constexpr-functions","tag-lambda-functions","tag-modern-c","tag-return-type-deduction","tag-template-functions","tag-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++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - 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\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ 14 yaz\u0131lar\u0131m\u0131za devam ediyoruz. Bu yaz\u0131mda, mevcut kabiliyetlere yap\u0131lan bir tak\u0131m ekleme mahiyetindeki \u00f6zelli\u011fe g\u00f6z at\u0131yor olaca\u011f\u0131z. Her ne kadar, \u00e7ok s\u0131k kullanaca\u011f\u0131n\u0131z ya da muhakkak ihtiyac\u0131n\u0131z olacak kabiliyetler olmasa da, yine de faydal\u0131 olaca\u011f\u0131na inan\u0131yorum. O zaman daha fazla oyalanmadan bunlara bir g\u00f6z atal\u0131m. constexpr fonksiyonlara ili\u015fkin g\u00fcncellemeler constexpr... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-28T21:00:54+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=\"5 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\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 46 &#8211; constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131\",\"datePublished\":\"2022-02-28T21:00:54+00:00\",\"dateModified\":\"2022-02-28T21:00:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\"},\"wordCount\":813,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"c++\",\"C++ 11\",\"C++ 14\",\"constexpr\",\"constexpr functions\",\"lambda functions\",\"Modern C++\",\"return type deduction\",\"template functions\",\"templates\"],\"articleSection\":[\"C++\",\"Modern C++\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\",\"name\":\"Haftal\u0131k C++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2022-02-28T21:00:54+00:00\",\"dateModified\":\"2022-02-28T21:00:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 46 &#8211; constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131\"}]},{\"@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++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - 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\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ 14 yaz\u0131lar\u0131m\u0131za devam ediyoruz. Bu yaz\u0131mda, mevcut kabiliyetlere yap\u0131lan bir tak\u0131m ekleme mahiyetindeki \u00f6zelli\u011fe g\u00f6z at\u0131yor olaca\u011f\u0131z. Her ne kadar, \u00e7ok s\u0131k kullanaca\u011f\u0131n\u0131z ya da muhakkak ihtiyac\u0131n\u0131z olacak kabiliyetler olmasa da, yine de faydal\u0131 olaca\u011f\u0131na inan\u0131yorum. O zaman daha fazla oyalanmadan bunlara bir g\u00f6z atal\u0131m. constexpr fonksiyonlara ili\u015fkin g\u00fcncellemeler constexpr... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2022-02-28T21:00:54+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":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 46 &#8211; constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131","datePublished":"2022-02-28T21:00:54+00:00","dateModified":"2022-02-28T21:00:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/"},"wordCount":813,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["c++","C++ 11","C++ 14","constexpr","constexpr functions","lambda functions","Modern C++","return type deduction","template functions","templates"],"articleSection":["C++","Modern C++"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/","name":"Haftal\u0131k C++ 46 - constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131 - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2022-02-28T21:00:54+00:00","dateModified":"2022-02-28T21:00:54+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/02\/28\/haftalik-c-46-constexpr-fonksiyonlar-ve-fonskiyonlar-icin-donus-tipi-cikarimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 46 &#8211; constexpr fonksiyonlar ve fonskiyonlar i\u00e7in d\u00f6n\u00fc\u015f tipi \u00e7\u0131kar\u0131m\u0131"}]},{"@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\/2467","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=2467"}],"version-history":[{"count":10,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2467\/revisions"}],"predecessor-version":[{"id":2479,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2467\/revisions\/2479"}],"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=2467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}