{"id":2886,"date":"2024-01-01T19:51:49","date_gmt":"2024-01-01T19:51:49","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2886"},"modified":"2024-07-14T21:34:20","modified_gmt":"2024-07-14T21:34:20","slug":"haftalik-c-60-big-four","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/","title":{"rendered":"Haftal\u0131k C++ 60 &#8211; &#8220;Big Four&#8221;"},"content":{"rendered":"<div>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, \u00f6ncelikle hepinize 2024 y\u0131l\u0131nda sevdiklerinize mutlu bir sene ge\u00e7irmenizi diliyorum \ud83d\ude42<\/div>\n<div>Uzun s\u00fcredir uEngine4 ile ilgili yaz\u0131lar payla\u015ft\u0131ktan sonra C++ maceram\u0131za d\u00f6nmenin vakti geldi. Elbette, uEngine&#8217;e ili\u015fkin payla\u015faca\u011f\u0131m daha bir \u00e7ok konu var ama ufak bir ara vermekte bir sak\u0131nca yok san\u0131r\u0131m. C++ 11, 14, 17&#8217;ye ili\u015fkin bir \u00e7ok konuya bakm\u0131\u015f olduk hatta C++ 20&#8217;ye dair de baz\u0131 kabiliyetlere bakt\u0131k ama art\u0131k dikkatimizi tamamen C++ 20&#8217;ye verme vakti geldi san\u0131r\u0131m. Hele de ufukta C++ 23 g\u00f6r\u00fcnd\u00fckten sonra \ud83d\ude42<\/div>\n<div><\/div>\n<div>\u00d6nceki yaz\u0131lar\u0131ma yukar\u0131daki yaz\u0131 dizileri sayfas\u0131ndan ula\u015fabilirsiniz (<span style=\"color: #339966;\"><strong>https:\/\/www.yazilimperver.com\/index.php\/kodlar\/<\/strong><\/span>).<\/div>\n<div><\/div>\n<div>C++ 20 denilince asl\u0131nda \u00f6ne \u00e7\u0131kan d\u00f6rt temel kabiliyet bulunmakta (&#8220;The Big Four&#8221;), bu yaz\u0131mda da k\u0131saca bunlara ve di\u011fer \u00f6zelliklere bak\u0131yor olaca\u011f\u0131z. \u0130lgili kabiliyetlerin detaylar\u0131na ise sonraki yaz\u0131lar\u0131mda bakaca\u011f\u0131z. Bu konuda da, sayfas\u0131nda \u00f6zellikle C++&#8217;a y\u00f6nelik yaz\u0131lar payla\u015fan ve bu konu ile ilgili kitaplar\u0131 bulunan Rainer Grimm&#8217;in haz\u0131rlad\u0131\u011f\u0131 \u015fekle bakal\u0131m:<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.modernescpp.com\/wp-content\/uploads\/2019\/10\/TimelineCpp20BigFourUpdate.png\" alt=\"TimelineCpp20BigFourUpdate\" width=\"948\" height=\"327\" \/><\/p>\n<p id=\"zTGWkZj\">\n<\/div>\n<div>\u00d6ncelikle 4 b\u00fcy\u00fc\u011fe bakal\u0131m, neler bunlar? &#8220;Concepts&#8221;, &#8220;Ranges&#8221; k\u00fct\u00fcphanesi, &#8220;Modules&#8221; ve &#8220;Coroutines&#8221;.<\/div>\n<h2><span style=\"color: #0000ff;\"><strong>Concepts<\/strong><\/span><\/h2>\n<div>Temel olarak template mekanizmas\u0131 kullan\u0131larak geli\u015ftirilen kodlarda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z ve anla\u015f\u0131lmas\u0131 geli\u015ftiriciler i\u00e7in olduk\u00e7a g\u00fc\u00e7 olan hata mesajlar\u0131n\u0131 biraz daha insanc\u0131l hale getiren bir mekanizma. Evet, bunun \u00e7ok basit bir ifade oldu\u011funu biliyorum ki, hikaye hi\u00e7 de bu kadar de\u011fil ama \u015fimdilik bu kafan\u0131zda bir resim belirmesi i\u00e7in yeterli san\u0131r\u0131m.<\/div>\n<div><\/div>\n<div>Peki bu nas\u0131l sa\u011flan\u0131yor?<\/div>\n<ul>\n<li>\u0130lgili gereksinimlerin, jenerik kod ile birlikte sunulmas\u0131 ve bu tiplerden neler beklendi\u011finin a\u00e7\u0131k hale getirilmesi,<\/li>\n<li>template arg\u00fcmanlara k\u0131s\u0131t getirilmesi<\/li>\n<li>Bunlardan t\u00fcretilecek olan yap\u0131lar\u0131n bunu kullanmas\u0131,<\/li>\n<li>\u0130stenmeyen veya beklenmedik tipler ile bu tiplerin kullan\u0131m\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilmesi,<\/li>\n<li>Son olarak da derleme zaman\u0131nda alaca\u011f\u0131m\u0131z hata mesajlar\u0131n\u0131n daha insanc\u0131l olmas\u0131.<\/li>\n<\/ul>\n<div>C++ 20 ile birlikte elbette bir \u00e7ok haz\u0131r &#8220;concept&#8221; de geliyor olacak. Bunlara ilgili yaz\u0131mda de\u011finiyor olaca\u011f\u0131m ama burada da bir \u00f6rnek vermeden ge\u00e7meyece\u011fim.<\/div>\n<div>\u015eimdi elimizde C++ 20 \u00f6ncesine ait a\u015fa\u011f\u0131daki gibi bir template function oldu\u011funu d\u00fc\u015f\u00fcnelim:<\/div>\n<div><\/div>\n<div>\n<pre class=\"lang:c++ decode:true \">template &lt;typename T&gt;\r\nvoid TemplateFunction(T x) {\r\n\u00a0 \/\/ ...\r\n}<\/pre>\n<p>Bu hali ile bu fonksiyonu herhangi bir tip ile tan\u0131mlayarak (float, int) kullanabilirsiniz. Peki bunu sadece tam say\u0131lar ile kullan\u0131lmas\u0131n\u0131 istesek ne yapacakt\u0131k? \u0130\u015fte C++ 20 ile birlikte a\u015fa\u011f\u0131daki tan\u0131mlamay\u0131 yapabiliyoruz ve bu sayede tam say\u0131 d\u0131\u015f\u0131nda bir tip ile bu fonksiyon kullan\u0131lmaya kalk\u0131\u015f\u0131l\u0131rsa, hatay\u0131 derleme zaman\u0131nda al\u0131yor olacak.<\/p>\n<\/div>\n<div>\n<pre class=\"lang:c++ decode:true\">template &lt;std::integral T&gt;\r\nvoid TemplateFunction(T x) {\r\n\u00a0 \/\/ ...\r\n}<\/pre>\n<p>Detaylara ilgili yaz\u0131mda de\u011finece\u011fim. \u015eimdi di\u011fer kabiliyete bakal\u0131m.<\/p>\n<\/div>\n<h2><span style=\"color: #0000ff;\">Ranges ve Views<\/span><\/h2>\n<div>ranges k\u00fct\u00fcphanesi temelde size \u00fczerinde dola\u015fabilece\u011finiz (iterat\u00f6rler ile ba\u011flang\u0131\u00e7 ve biti\u015f (begin\/end)) bir grup kaleme ili\u015fkin soyutlama sa\u011flayan mekanizmad\u0131r. Bir di\u011fer ifade ile asl\u0131nda mevcut iterat\u00f6rler \u00fczerinde bir seviye daha soyutlama getirerek, yeni fikirleri ifade etme, bunlar\u0131 STL algoritmalar\u0131 ile kullanma ve farkl\u0131 hesaplama y\u00f6ntemlerini hayata ge\u00e7irmenize olanak sa\u011flamaktad\u0131rlar. A\u00e7\u0131k\u00e7as\u0131 bu kabiliyet bir \u00f6rnek \u00fczerinden incelemek san\u0131r\u0131m daha iyi olacak.<\/div>\n<div>A\u015fa\u011f\u0131daki say\u0131larak s\u0131ralamak i\u00e7in algoritmalar\u0131 kullanarak a\u015fa\u011f\u0131daki gibi bir yol izleyebilirsiniz:<\/div>\n<div><\/div>\n<div>\n<pre class=\"lang:c++ decode:true \">using namespace std;\r\nvector numbers{ 1, 3, 8, 55, 11, 807, 16, 126, 87, 34 };\r\nsort(begin(numbers),end(numbers));<\/pre>\n<p>ranges ile birlikte art\u0131k bunu<\/p>\n<\/div>\n<div>\n<pre class=\"lang:c++ decode:true\">ranges::sort(numbers);<\/pre>\n<p>ile de yapabiliyor olaca\u011f\u0131z.<\/p>\n<\/div>\n<div><\/div>\n<div>\u00d6zet olarak ranges bize ne sa\u011fl\u0131yor?<\/div>\n<ul>\n<li>Ham iterat\u00f6rleri gizlemek ve kodu daha sade hale getirmek,<\/li>\n<li>Konteynerler\u0131n direk kullan\u0131m\u0131na izin vermek (dola\u015fmadan),<\/li>\n<li>Range views ile birlikte, fonksiyon kompozisyonunu (function composition) kolayla\u015ft\u0131rmak (views&#8217;a da geliyoruz).<\/li>\n<\/ul>\n<div>Ranges&#8217;in as\u0131l kuvveti view&#8217;lar ile birlikte daha g\u00f6r\u00fcn\u00fcr olmakta. Bir view bize yukar\u0131da tan\u0131mlad\u0131\u011f\u0131m\u0131z ranges ya da ba\u015fka view&#8217;lar \u00fczerinde operasyon yapmam\u0131za olanak sa\u011flamakta. Bir anlamda fonksiyonel programlama yakla\u015f\u0131m\u0131n\u0131 kazand\u0131rmakta. Yani asl\u0131nda verinin kendisini sahiplenmeden, \u00fczerinde operasyonlar yapmam\u0131za olanak sa\u011flamaktad\u0131r. Bu sayede yukar\u0131da da bahsetti\u011fim gibi | operat\u00f6r\u00fc ile birlikte fonksiyonlar\u0131n\u0131 birbirine ba\u011flayabiliyoruz (&#8220;piping&#8221;).<\/div>\n<div><\/div>\n<div>Bu kabiliyeti de bir \u00f6rnek ile \u015fimdilik kapatal\u0131m:<\/div>\n<div>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;ranges&gt;\r\n\r\nusing namespace std;\r\n\r\nint main() {\r\n\u00a0 \u00a0 std::vector&lt;int&gt; numbers = {1, 2, 3, 4, 5, 6};\r\n\u00a0 \u00a0 std::cout &lt;&lt; \"Original List: \";\r\n\u00a0 \u00a0 for (auto v: numbers)\r\n\u00a0 \u00a0 \u00a0 \u00a0 std::cout &lt;&lt; v &lt;&lt; \" \";\r\n\r\n  \u00a0 \/\/ Once cift sayilari aliyoruz, sonra bunlari 2 ile carpiyoruz\r\n\u00a0 \u00a0 auto results = numbers | std::views::filter([](int n){ return n % 2 == 0; })\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0| std::views::transform([](int n){ return n * 2; });\r\n\r\n\u00a0 \u00a0 std::cout &lt;&lt; \"\\nFiltered and Transformed : \";\r\n\u00a0 \u00a0 for (auto v: results)\r\n\u00a0 \u00a0 \u00a0 \u00a0 std::cout &lt;&lt; v &lt;&lt; \" \";\r\n\u00a0 \u00a0 return 0;\r\n}<\/pre>\n<\/div>\n<h2><span style=\"color: #0000ff;\"><strong>Modules<\/strong><\/span><\/h2>\n<div>Mod\u00fcller, C++ i\u00e7in, ba\u015fl\u0131k dosyalar\u0131ndan kurtularak, \u00e7ok daha iyi bir izolasyon ve ilgili i\u015flevlerin bir araya getirilmesi i\u00e7in daha modern bir y\u00f6ntem sunmaktad\u0131r.<\/div>\n<div>Burada h\u0131zl\u0131ca faydalar\u0131na de\u011finerek, detaylar\u0131 ilgili yaz\u0131ma b\u0131rakaca\u011f\u0131m:<\/div>\n<ul>\n<li>Mod\u00fcllerin bir kere derleme ihtiyac\u0131 sebebi ile, daha k\u0131sa derleme zaman\u0131,<\/li>\n<li>Ba\u015fl\u0131k dosyas\u0131 i\u00e7in tan\u0131mlanan &#8220;include guard&#8221; (#ifndef\/#define)&#8217;a ihiya\u00e7 kalmamas\u0131,<\/li>\n<li>Dahil edilen mod\u00fcllerin s\u0131ras\u0131n\u0131n \u00f6nemli olmamas\u0131,<\/li>\n<li>Makrolar\u0131n, mod\u00fcl\u00fc kapsam\u0131 d\u0131\u015f\u0131na \u00e7\u0131kmamas\u0131 (mod\u00fcl kapsam\u0131nda olmas\u0131),<\/li>\n<li>Fiziksel yap\u0131dan ziyade mant\u0131ksal yap\u0131y\u0131 a\u00e7\u0131klar. \u0130lgili kabiliyetler isimleri ile birlikte a\u00e7\u0131k olarak d\u0131\u015fa sunulabilmektedir,<\/li>\n<li>Ba\u015fl\u0131k dosyalar\u0131 ile kaynak kodlar\u0131n birbirinden ayr\u0131lmas\u0131na ihtiya\u00e7 kalmamas\u0131,<\/li>\n<li>Daha iyi bir paket y\u00f6netim sistemine \u00f6n ayak olmas\u0131.<\/li>\n<\/ul>\n<div>Bu kabiliyete (daha do\u011frusu \u00f6n izlemesine) veda etmeden \u00f6nce bir \u00f6rne\u011fe elbette bak\u0131yor olaca\u011f\u0131z:<\/div>\n<div><\/div>\n<div>\n<pre class=\"lang:c++ decode:true\">export module math;\r\n\r\nexport int add(int fir, int sec) {\r\n\u00a0 \u00a0 \u00a0return fir + sec;\r\n}\r\n\r\nimport math;\r\n\r\nint main() {\r\n\u00a0 \u00a0 add(2000, 20);\r\n}<\/pre>\n<\/div>\n<div>\n<h2><span style=\"color: #0000ff;\"><strong>Coroutines<\/strong><\/span><\/h2>\n<div>Coroutine&#8217;ler, \u00e7al\u0131\u015fmas\u0131 durdurularak daha sonra devam ettirilebilen fonksiyonlar olarak \u00f6zetlenebilir. Coroutine&#8217;ler &#8220;stack&#8221; i\u00e7ermezler ve durdurulduklar\u0131nda, ca\u011fr\u0131lan kapsama d\u00f6ner ve geri \u00e7al\u0131\u015fmaya devam ettirildiklerinde ise ki burada devam etmeleri i\u00e7in gereke veri \u00e7a\u011f\u0131ran ba\u011flamda bulunan y\u0131\u011f\u0131nda tutulmad\u0131\u011f\u0131ndan (&#8220;stack&#8221;), bu coroutin&#8217;ler asenkron olarak da \u00e7a\u011fr\u0131labilmektedir. A\u015fa\u011f\u0131daki fig\u00fcrde de g\u00f6r\u00fclebilece\u011fi \u00fczere, fonksiyon B \u00e7al\u0131\u015fmaya devam ederken, A daha sonra devam ettirilebilir. Coroutine&#8217;lerin temel olay\u0131 asl\u0131nda bu (elbette detaylar mevcut \ud83d\ude42 )<\/div>\n<div><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:875\/1*HRXlSSWCHdP9qsqaWlkB6Q.png\" \/><\/div>\n<div><\/div>\n<div>Coroutine&#8217;ler k\u0131saca i\u00e7erisinde \u015fu anahtar kelimeleri i\u00e7eren fonksiyonlara olarak da tan\u0131mlanabilir: co_await, co_return, co_yield.\u00a0 Coroutine&#8217;ler olay tabanl\u0131 uygulamalar geli\u015ftirmek i\u00e7in olduk\u00e7a faydal\u0131 bir ara\u00e7 olarak sunulmu\u015ftur. Tabi ki bu mekanizma i\u00e7in bir tak\u0131m s\u0131n\u0131rland\u0131rmalar da bulunmaktad\u0131r ama buna \u015fu an de\u011finmeyece\u011fim.<\/div>\n<div>\u0130tiraf etmeliyim ki, d\u00f6rt kabiliyet i\u00e7erisinde en fazla vakit harcamam\u0131z gereken san\u0131r\u0131m bu kabiliyet olacak, o sebeple de detaylar\u0131na bu konuya ili\u015fkin olan yaz\u0131mda in\u015fallah bak\u0131yor olaca\u011f\u0131z.<\/div>\n<div>O zamana kadar kendinize \u00e7ok iyi bak\u0131n, hepinize huzurlu ve bol kodlu g\u00fcnler diliyorum \ud83d\ude42<\/div>\n<\/div>\n<div><\/div>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/constraints\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/constraints<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/ranges\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/ranges<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/modules\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/modules<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/coroutines\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/coroutines<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/probablydance.com\/2021\/10\/31\/c-coroutines-do-not-spark-joy\/\"><span style=\"color: #008000;\"><strong>https:\/\/probablydance.com\/2021\/10\/31\/c-coroutines-do-not-spark-joy\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/corecppil.github.io\/Meetups\/CoreCpp2021\/PavelYosifovich_Cpp20TheBigFour.pdf\"><span style=\"color: #008000;\"><strong>https:\/\/corecppil.github.io\/Meetups\/CoreCpp2021\/PavelYosifovich_Cpp20TheBigFour.pdf<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@comonadd\/brief-article-on-c-modules-f58287a6c64\"><span style=\"color: #008000;\"><strong>https:\/\/medium.com\/@comonadd\/brief-article-on-c-modules-f58287a6c64<\/strong><\/span><\/a><\/li>\n<li><span style=\"color: #008000;\"><strong><a class=\"af mv\" style=\"color: #008000;\" href=\"https:\/\/www.youtube.com\/watch?v=RwdQA0pGWa4\" target=\"_blank\" rel=\"noopener ugc nofollow\">CppCon 2015: Gabriel Dos Reis \u00e2\u20ac\u0153Large Scale C++ with Modules: What You Should Know\u201d<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong>https:\/\/www.studyplan.dev\/pro-cpp\/concepts<\/strong><\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, \u00f6ncelikle hepinize 2024 y\u0131l\u0131nda sevdiklerinize mutlu bir sene ge\u00e7irmenizi diliyorum \ud83d\ude42 Uzun s\u00fcredir uEngine4 ile ilgili yaz\u0131lar payla\u015ft\u0131ktan sonra C++ maceram\u0131za d\u00f6nmenin vakti geldi. Elbette, uEngine&#8217;e ili\u015fkin payla\u015faca\u011f\u0131m daha bir \u00e7ok konu var ama ufak bir ara vermekte bir sak\u0131nca yok san\u0131r\u0131m. C++ 11, 14, 17&#8217;ye ili\u015fkin bir \u00e7ok konuya bakm\u0131\u015f&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\">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":[1119,242,815,1122,42,1121,816,1120,1046],"class_list":["post-2886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","tag-big-four","tag-c-20","tag-concepts","tag-coroutines","tag-modern-c","tag-modules","tag-ranges","tag-template-metaprogramming","tag-views"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 60 - &quot;Big Four&quot; - 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\/2024\/01\/01\/haftalik-c-60-big-four\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 60 - &quot;Big Four&quot; - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, \u00f6ncelikle hepinize 2024 y\u0131l\u0131nda sevdiklerinize mutlu bir sene ge\u00e7irmenizi diliyorum \ud83d\ude42 Uzun s\u00fcredir uEngine4 ile ilgili yaz\u0131lar payla\u015ft\u0131ktan sonra C++ maceram\u0131za d\u00f6nmenin vakti geldi. Elbette, uEngine&#8217;e ili\u015fkin payla\u015faca\u011f\u0131m daha bir \u00e7ok konu var ama ufak bir ara vermekte bir sak\u0131nca yok san\u0131r\u0131m. C++ 11, 14, 17&#8217;ye ili\u015fkin bir \u00e7ok konuya bakm\u0131\u015f... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-01T19:51:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-14T21:34:20+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=\"6 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\/2024\/01\/01\/haftalik-c-60-big-four\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 60 &#8211; &#8220;Big Four&#8221;\",\"datePublished\":\"2024-01-01T19:51:49+00:00\",\"dateModified\":\"2024-07-14T21:34:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\"},\"wordCount\":1148,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"big four\",\"C++ 20\",\"Concepts\",\"coroutines\",\"Modern C++\",\"modules\",\"Ranges\",\"template metaprogramming\",\"views\"],\"articleSection\":[\"C++\",\"Modern C++\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\",\"name\":\"Haftal\u0131k C++ 60 - \\\"Big Four\\\" - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2024-01-01T19:51:49+00:00\",\"dateModified\":\"2024-07-14T21:34:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 60 &#8211; &#8220;Big Four&#8221;\"}]},{\"@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++ 60 - \"Big Four\" - 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\/2024\/01\/01\/haftalik-c-60-big-four\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 60 - \"Big Four\" - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, \u00f6ncelikle hepinize 2024 y\u0131l\u0131nda sevdiklerinize mutlu bir sene ge\u00e7irmenizi diliyorum \ud83d\ude42 Uzun s\u00fcredir uEngine4 ile ilgili yaz\u0131lar payla\u015ft\u0131ktan sonra C++ maceram\u0131za d\u00f6nmenin vakti geldi. Elbette, uEngine&#8217;e ili\u015fkin payla\u015faca\u011f\u0131m daha bir \u00e7ok konu var ama ufak bir ara vermekte bir sak\u0131nca yok san\u0131r\u0131m. C++ 11, 14, 17&#8217;ye ili\u015fkin bir \u00e7ok konuya bakm\u0131\u015f... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2024-01-01T19:51:49+00:00","article_modified_time":"2024-07-14T21:34:20+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":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 60 &#8211; &#8220;Big Four&#8221;","datePublished":"2024-01-01T19:51:49+00:00","dateModified":"2024-07-14T21:34:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/"},"wordCount":1148,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["big four","C++ 20","Concepts","coroutines","Modern C++","modules","Ranges","template metaprogramming","views"],"articleSection":["C++","Modern C++"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/","name":"Haftal\u0131k C++ 60 - \"Big Four\" - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2024-01-01T19:51:49+00:00","dateModified":"2024-07-14T21:34:20+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2024\/01\/01\/haftalik-c-60-big-four\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 60 &#8211; &#8220;Big Four&#8221;"}]},{"@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\/2886","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=2886"}],"version-history":[{"count":5,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2886\/revisions"}],"predecessor-version":[{"id":2938,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2886\/revisions\/2938"}],"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=2886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}