{"id":2702,"date":"2022-11-06T15:34:59","date_gmt":"2022-11-06T15:34:59","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2702"},"modified":"2022-11-06T15:36:06","modified_gmt":"2022-11-06T15:36:06","slug":"haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/","title":{"rendered":"Haftal\u0131k C++ 52 &#8211; \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include"},"content":{"rendered":"<p>Evet arkada\u015flar, bu hafta da C++ 17 ile i\u015fimizi kolayla\u015ft\u0131racak birden fazla kabiliyete h\u0131zl\u0131ca de\u011finiyor olaca\u011f\u0131m.<br \/>\nMalum, C++ 20 \u00e7\u0131kt\u0131, C++ 23 de yolda, bir an \u00f6nce onlara yeti\u015fiyor olmam\u0131z laz\u0131m \ud83d\ude42 \u0130laveten, uEngine de f\u0131r\u0131ndan \u00e7\u0131kt\u0131 o \u00e7ocu\u011fa ili\u015fkin de yazacaklar\u0131m\u0131z olacak elbette.<br \/>\n\u015eimdi gelin, de\u011finece\u011fimiz kabiliyetlere bir g\u00f6z atal\u0131m:<\/p>\n<ul>\n<li>nested namespaces<\/li>\n<li>using ile birden fazla tipin dahil edilmesi<\/li>\n<li>Mesaj i\u00e7ermeyen static_assert<\/li>\n<li>__has_include<\/li>\n<\/ul>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere, olduk\u00e7a fazla kalem var ama a\u00e7\u0131k\u00e7as\u0131 \u00e7ok da karma\u015f\u0131k olmad\u0131klar\u0131 i\u00e7in k\u0131saca bilgiler verip ge\u00e7iyor olaca\u011f\u0131z. Detayland\u0131rmam\u0131 istedi\u011finiz kabiliyet olursa, her zaman yorumlarda belirtebilirsiniz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Nested Namespaces<\/strong><\/span><\/h2>\n<p>Evet, i\u00e7 i\u00e7e isim uzaylar\u0131 olarak nitelendirebilece\u011fimiz bu kabiliyet isminde de anla\u015f\u0131laca\u011f\u0131 \u00fczere daha kolay ve okunabilir bir \u015fekilde, isim uzaylar\u0131n\u0131 tan\u0131mlaman\u0131za olanak sa\u011flamakta. Hemen bir \u00f6rnek ile daha yak\u0131ndan bakal\u0131m. C++ 17 \u00f6ncesinde, i\u00e7 i\u00e7e isim uzaylar\u0131n\u0131 a\u015fa\u011f\u0131daki gibi tan\u0131mlaman\u0131z gerekmekteydi (elbette kabiliyeti g\u00f6stermek i\u00e7in \u00f6rne\u011fi biraz zorlad\u0131m):<\/p>\n<pre class=\"lang:c++ decode:true \">namespace uEngine{\r\n    namespace Networking{\r\n       namespace FTP{\r\n           \/* ... *\/\r\n       }\r\n    }\r\n}<\/pre>\n<p>bunu art\u0131k<\/p>\n<pre class=\"lang:c++ decode:true \">namespace uEngine::Networking::FTP{ \/* ... *\/ }<\/pre>\n<p>diyerek de tan\u0131mlayabileceksiniz.<\/p>\n<p>Bu yakla\u015f\u0131ma ili\u015fkin \u00f6neriye ve detaylar\u0131na <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2014\/n4026.html\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2014\/n4026.html<\/a><\/strong><\/span> adresinden ula\u015fabilirsiniz. Bunun s\u0131k\u0131nt\u0131s\u0131na ve C++ 17 \u00f6ncesinde nas\u0131l \u00e7\u00f6z\u00fcmler geli\u015ftirildi\u011fine g\u00f6z atmak i\u00e7in <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/seanmiddleditch.github.io\/unnest-c-namespaces\/\">https:\/\/seanmiddleditch.github.io\/unnest-c-namespaces\/<\/a><\/strong> <\/span>sayfas\u0131na g\u00f6z atabilirsiniz.<\/p>\n<p>Her ne kadar genel olarak olumlu kabul g\u00f6rse de, <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2017\/p0816r0.pdf\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2017\/p0816r0.pdf<\/a><\/strong> <\/span>gibi yakla\u015f\u0131mlar da mevcut.<\/p>\n<p>Ben a\u00e7\u0131k\u00e7as\u0131, tan\u0131mlama a\u00e7\u0131s\u0131ndan kolayl\u0131k getirece\u011fi kan\u0131s\u0131nday\u0131m.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>using ile birden fazla tan\u0131m ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p>C++ 17 \u00f6ncesinde using ile bir tane tipi dahil etmeye y\u00f6nelik deklerasyon yapabiliyordunuz ama C++ 17 ile ayn\u0131 anda birden fazla tip tan\u0131m\u0131n\u0131n kullan\u0131m da m\u00fcmk\u00fcn olabilmekte. Hemen bir \u00f6rnek ile inceleyelim:<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n\r\nusing namespace std;\r\n\r\nnamespace uEngine::Networking::FTP{\r\n    class FTP{};\r\n    constexpr unsigned int cDefaultFTPPort {21};\r\n}\r\n\r\nnamespace uEngine::Networking::HTTP{\r\n    class HTTP{};\r\n    constexpr unsigned int cDefaultHTTPPort {80};\r\n}\r\n\r\nint main()\r\n{\r\n    using uEngine::Networking::FTP::cDefaultFTPPort, uEngine::Networking::HTTP::cDefaultHTTPPort;\r\n    \r\n    cout &lt;&lt; \"Varsayilan FTP Portu: \" &lt;&lt; cDefaultFTPPort &lt;&lt; '\\n'\r\n         &lt;&lt; \"Varsayilan HTTP Portu: \" &lt;&lt; cDefaultHTTPPort &lt;&lt; '\\n';\r\n\r\n    return 0;\r\n}<\/pre>\n<h2><span style=\"color: #0000ff;\"><strong>Mesaj i\u00e7ermeyen static_assert:<\/strong><\/span><\/h2>\n<p>static_assert, sizlere derleme zaman\u0131nda bir tak\u0131m uyumsuzluklar hakk\u0131nda bilgilendirmek i\u00e7in kullan\u0131labilecek ve C++ 11 ile dile kazand\u0131r\u0131lan bir kabiliyetti. Bu kabiliyet ile birlikte, verilen bir boolean (derleme zaman\u0131nda hesaplanabilecek) de\u011ferlendirme \u0131\u015f\u0131\u011f\u0131nda hata mesaj\u0131 verilmekteydi. \u00d6rne\u011fin 32Bit derleyici ile kodun derlendi\u011finden emin olmak i\u00e7in a\u015fa\u011f\u0131daki gibi kod par\u00e7as\u0131 ekleyip, ilgili kodu 64 Bit derleyici de derledi\u011finizde:<\/p>\n<pre class=\"lang:c++ decode:true \">int main() {\r\n     static_assert(sizeof(void*) == 4, \"32 bitlik derleme yapilmali!\");\r\n     return 0;\r\n}<\/pre>\n<pre class=\"lang:default decode:true \">\"main.cpp:15:5: error: static assertion failed: 32 bitlik derleme yapilmali!\r\nstatic_assert(sizeof(void*) == 4, \"32 bitlik derleme yapilmali!\");\"<\/pre>\n<p>gibi bir hata al\u0131rs\u0131n\u0131z. C++ 17 ile birlikte, static_assert&#8217;in ikinci parametresine ihtiya\u00e7 kalmad\u0131. \u015e\u00f6yle ki, a\u015fa\u011f\u0131daki gibi bir kullan\u0131m da art\u0131k m\u00fcmk\u00fcn:<\/p>\n<pre class=\"lang:c++ decode:true \">int main() {\r\n    static_assert(sizeof(void*) == 4);\r\n    return 0;\r\n}<\/pre>\n<p>Bu durumda alaca\u011f\u0131n\u0131z hata ise, a\u015fa\u011f\u0131daki gibi olacak:<\/p>\n<pre class=\"lang:default decode:true \">\"main.cpp:15:5: error: static assertion failed\r\nstatic_assert(sizeof(void*) == 4);\"<\/pre>\n<h2><span style=\"color: #0000ff;\"><strong>__has_include<\/strong><\/span><\/h2>\n<p>C++ 17 ile gelen bir di\u011fer kabiliyet, \u00f6zellikle, \u00e7oklu platformlar i\u00e7in yaz\u0131l\u0131m geli\u015ftirenlerin i\u015fini kolayla\u015ft\u0131racak nitelikte. Ama \u015funu da s\u00f6ylemem gerekiyor ki, bu kabiliyet ile sunulan \u015feyleri ba\u015fka mekanizmalar ile de yapabiliyorduk fakat bu biraz daha temiz ve tan\u0131ml\u0131 yol sunmakta. Hemen referans sayfas\u0131nda (ve \u00f6neride olan <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0061r1.html\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0061r1.html<\/a><\/strong>)<\/span> bulunan, std::optional ile ilgili \u00f6rne\u011fe bir bakal\u0131m. Bu \u00f6rnekte, ilgili ba\u015fl\u0131k dosyas\u0131n\u0131n olup\/olmamas\u0131na g\u00f6re, kullan\u0131lan optional dosyas\u0131 de\u011fi\u015ftirilmekte:<\/p>\n<pre class=\"lang:c++ decode:true\">#if __has_include(&lt;optional&gt;)\r\n# include &lt;optional&gt;\r\n# define have_optional 1\r\n#elif __has_include(&lt;experimental\/optional&gt;)\r\n# include &lt;experimental\/optional&gt;\r\n# define have_optional 1\r\n# define experimental_optional 1\r\n#else\r\n# define have_optional 0\r\n#endif\r\n\r\n\/\/ Optional var mi\r\n#if have_optional == 1\r\n#ifndef experimental_optional\r\n    std::optional&lt;int&gt; oint;\r\n\/\/ Yokmus\r\n#else\r\n    std::experimental::optional&lt;int&gt; oint;\r\n#endif<\/pre>\n<p>Ayr\u0131ca, <a href=\"https:\/\/www.cppstories.com\/2019\/07\/hasinclude\/\"><strong><span style=\"color: #008000;\">https:\/\/www.cppstories.com\/2019\/07\/hasinclude<\/span><\/strong>\/<\/a> sayfas\u0131nda, \u00f6zellikle benim de daha \u00f6nce OpenGL uygulamas\u0131 geli\u015ftirirken ba\u015fvurdu\u011fum ve s\u0131k\u0131nt\u0131 ya\u015fad\u0131\u011f\u0131m bir konuya nas\u0131l \u00e7\u00f6z\u00fcm getirdi\u011fini g\u00f6stermi\u015f. Baz\u0131 platformlar i\u00e7in, OpenGL ba\u015fl\u0131k dosyalar\u0131n\u0131n bulundu\u011fu dizinler de\u011fi\u015fiklik g\u00f6sterebilmekte. Bu sebeple, birden fazla platforma hitap eden k\u00fct\u00fcphaneler geli\u015ftirirken bu hususa dikkat etmeniz gerekiyor. \u00d6r. a\u015fa\u011f\u0131daki kodta APPLE i\u00e7in nas\u0131l bir yol izlendi\u011fi g\u00f6sterilmi\u015f:<\/p>\n<pre class=\"lang:c++ decode:true \">#ifdef __APPLE__\r\n# include &lt;OpenGL\/gl.h&gt;\r\n# include &lt;OpenGL\/glu.h&gt;\r\n#else\r\n# include &lt;GL\/gl.h&gt;\r\n# include &lt;GL\/glu.h&gt;\r\n#endif<\/pre>\n<p>burada a\u00e7\u0131k bir \u015fekilde __APPLE__ makrosuna at\u0131f var. __has_include ile bu kod par\u00e7as\u0131 a\u015fa\u011f\u0131daki gibi yaz\u0131labiliyor ve bu sayede sadece APPLE de\u011fil benzer kullan\u0131ma sahip b\u00fct\u00fcn platformlar\u0131 da kotarm\u0131\u015f oluyoruz.<\/p>\n<pre class=\"lang:c++ decode:true\">#if __has_include(&lt;GL\/gl.h&gt;)\r\n# include &lt;GL\/gl.h&gt;\r\n# include &lt;GL\/glu.h&gt;\r\n#else\r\n# include &lt;OpenGL\/gl.h&gt;\r\n# include &lt;OpenGL\/glu.h&gt;\r\n#endif<\/pre>\n<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m bir C++ yaz\u0131m\u0131n daha sonuna geldik. Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle, bol kodlu g\u00fcnler \ud83d\ude42<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2014\/n4026.html\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2014\/n4026.html<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/seanmiddleditch.github.io\/unnest-c-namespaces\/\">https:\/\/seanmiddleditch.github.io\/unnest-c-namespaces\/<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2017\/p0816r0.pdf\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2017\/p0816r0.pdf<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0061r1.html\">https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0061r1.html<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.cppstories.com\/2019\/07\/hasinclude\/\">https:\/\/www.cppstories.com\/2019\/07\/hasinclude\/<\/a><\/strong><\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Evet arkada\u015flar, bu hafta da C++ 17 ile i\u015fimizi kolayla\u015ft\u0131racak birden fazla kabiliyete h\u0131zl\u0131ca de\u011finiyor olaca\u011f\u0131m. Malum, C++ 20 \u00e7\u0131kt\u0131, C++ 23 de yolda, bir an \u00f6nce onlara yeti\u015fiyor olmam\u0131z laz\u0131m \ud83d\ude42 \u0130laveten, uEngine de f\u0131r\u0131ndan \u00e7\u0131kt\u0131 o \u00e7ocu\u011fa ili\u015fkin de yazacaklar\u0131m\u0131z olacak elbette. \u015eimdi gelin, de\u011finece\u011fimiz kabiliyetlere bir g\u00f6z atal\u0131m: nested namespaces using ile&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"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":[1050,234,1051,1052,1053],"class_list":["post-2702","post","type-post","status-publish","format-standard","hentry","category-c","category-modern-c","tag-__has_include","tag-c-17","tag-nested-namespace","tag-static_asset","tag-using"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - 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\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet arkada\u015flar, bu hafta da C++ 17 ile i\u015fimizi kolayla\u015ft\u0131racak birden fazla kabiliyete h\u0131zl\u0131ca de\u011finiyor olaca\u011f\u0131m. Malum, C++ 20 \u00e7\u0131kt\u0131, C++ 23 de yolda, bir an \u00f6nce onlara yeti\u015fiyor olmam\u0131z laz\u0131m \ud83d\ude42 \u0130laveten, uEngine de f\u0131r\u0131ndan \u00e7\u0131kt\u0131 o \u00e7ocu\u011fa ili\u015fkin de yazacaklar\u0131m\u0131z olacak elbette. \u015eimdi gelin, de\u011finece\u011fimiz kabiliyetlere bir g\u00f6z atal\u0131m: nested namespaces using ile... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-06T15:34:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-06T15:36:06+00:00\" \/>\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\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 52 &#8211; \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include\",\"datePublished\":\"2022-11-06T15:34:59+00:00\",\"dateModified\":\"2022-11-06T15:36:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\"},\"wordCount\":784,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"__has_include\",\"c++ 17\",\"nested namespace\",\"static_asset\",\"using\"],\"articleSection\":[\"C++\",\"Modern C++\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\",\"name\":\"Haftal\u0131k C++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2022-11-06T15:34:59+00:00\",\"dateModified\":\"2022-11-06T15:36:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 52 &#8211; \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include\"}]},{\"@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++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - 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\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet arkada\u015flar, bu hafta da C++ 17 ile i\u015fimizi kolayla\u015ft\u0131racak birden fazla kabiliyete h\u0131zl\u0131ca de\u011finiyor olaca\u011f\u0131m. Malum, C++ 20 \u00e7\u0131kt\u0131, C++ 23 de yolda, bir an \u00f6nce onlara yeti\u015fiyor olmam\u0131z laz\u0131m \ud83d\ude42 \u0130laveten, uEngine de f\u0131r\u0131ndan \u00e7\u0131kt\u0131 o \u00e7ocu\u011fa ili\u015fkin de yazacaklar\u0131m\u0131z olacak elbette. \u015eimdi gelin, de\u011finece\u011fimiz kabiliyetlere bir g\u00f6z atal\u0131m: nested namespaces using ile... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2022-11-06T15:34:59+00:00","article_modified_time":"2022-11-06T15:36:06+00:00","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\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 52 &#8211; \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include","datePublished":"2022-11-06T15:34:59+00:00","dateModified":"2022-11-06T15:36:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/"},"wordCount":784,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["__has_include","c++ 17","nested namespace","static_asset","using"],"articleSection":["C++","Modern C++"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/","name":"Haftal\u0131k C++ 52 - \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2022-11-06T15:34:59+00:00","dateModified":"2022-11-06T15:36:06+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2022\/11\/06\/haftalik-c-52-ic-ice-isim-uzaylari-mesajsiz-static_assert-__has_include\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 52 &#8211; \u0130\u00e7 i\u00e7e isim uzaylar\u0131, mesajs\u0131z static_assert, __has_include"}]},{"@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\/2702","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=2702"}],"version-history":[{"count":2,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2702\/revisions"}],"predecessor-version":[{"id":2704,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2702\/revisions\/2704"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}