¡°17c++²¢·ÇÒ»ÈËÖ®±Ê¡±¡ª¡ªÕâ¾ä»°£¬³õÌý֮ϣ¬»òÐí»áÈÃÈËåÚÏ뵽ij¸öÉñÃØµÄ´úºÅ£¬Ò»¸öÒþ²ØÔÚ´úÂëÉî´¦µÄ´«ÆæÈËÎï¡£ÊÂʵԶ±ÈÕâÔ½·¢²¨ÌÎ׳À«£¬Ô½·¢³äÂúÈËÎÄÉ«²Ê¡£ËüÊÇÒ»´ÎÕûÌåµÄÄź°£¬Ò»´ÎÖǻ۵蘆´£¬Ò»´ÎÎÞÊýË«ÊÖÅäºÏ»ÓÈ÷º¹Ë®µÄ׳Àö»¾í¡£µ±ÎÒÃÇ̸ÂÛ17c++ʱ£¬ÎÒÃDz¢·ÇÔÚÕ°Ñöһλ¹Âµ¨Ó¢ÐÛ£¬¶øÊÇÔÚ×¢ÊÓһƬèè²µÄÐǺӡ£
c++ÓïÑÔ×Ô¼º£¬¾ÍÊÇÒ»²¿Âþ³¤¶øÑ¤ÀõÄÑݽøÊ·£¬¶øÃ¿Ò»´ú?±ê×¼£¨ÈçC++11¡¢C++14¡¢C++17¡¢C++20µÈ£©µÄ½µÉú£¬¶¼Àë²»¿ªÒ»¸öÖØ´ó¶ø»îÔ¾µÄÉçÇø¡£17c++£¬ÌØÖ¸C++17±ê×¼£¬ÊÇÕâ¸öÉçÇøÕûÌåÖǻ۽ᾧµÄÓÖÒ»Ö÷ÒªÀï³Ì±®¡£Ëü²»ÊÇÓÉijλ¡°ÏÍÈË¡±Æ¾¿Õ´´Á¢£¬¶øÊÇÓÉÀ´×ÔÌìϸ÷µØ¡¢²î±ðÅä¾°¡¢²î±ðÁìÓòµÄ³ÉǧÉÏÍòÃû¹¤³Ìʦ¡¢Ñо¿Ö°Ô±¡¢½ÌÓýÕßÉõÖÁÊÇÈÈÇéµÄÒµÓàϲ»¶Õߣ¬ÔÚÀú¾ÎÞÊý´Î¾Û»á¡¢ÌÖÂÛ¡¢Ìá°¸¡¢Í¶Æ±ºÍʵ¼ùÄ¥Á·ºó£¬ÅäºÏ´òÄ¥¶ø³É¡£
ÏëÏóһϣ¬ÔÚ¹ú¼Ê±ê×¼»¯×éÖ¯£¨ISO£©µÄC++±ê׼ίԱ»á£¨WG21£©µÄ¾Û»áÊÒÀ³¡¾°ºÎÆä׳¹Û¡£À´×Ô΢Èí¡¢¹È¸è¡¢Æ»¹û¡¢GCC¡¢ClangµÈ¸÷´óÊÖÒÕ¾ÞÍ·µÄ´ú±í£¬ÒÔ¼°ÖÚ¶à¸ßУµÄ½ÌÊÚºÍ×ÔÁ¦¿ª·¢Õߣ¬Î§×øÔÚÒ»Æð£¬ÎªÁËÒ»¸öÄ£°åÍÆµ¼¹æÔò¡¢Ò»¸öÐÂÌØÕ÷Óï·¨¡¢Ò»¸öÐÔÄÜÓÅ»¯¼Æ»®£¬ÕùµÃÃæºì¶ú³à£¬ÓÖÔÚÒªº¦Ê±¿Ì¸æ¿¢¹²Ê¶¡£
ÿһ´ÎµÄ±ç˵£¬Ã¿Ò»´ÎµÄÍ×У¬Ã¿Ò»´ÎµÄÁ¢Ò죬¶¼Äý¾Û×ÅËûÃǵÄרҵ֪ʶ¡¢¶ÔÓïÑÔµÄÈȰ®ÒÔ¼°¶ÔÈí¼þ¹¤³ÌδÀ´µÄÉî¿Ì¶´²ì¡£
¡°17c++¡±Õâ¸ö±êÇ©£¬ÏÖʵÉÏÊǶÔC++17ÕâÒ»ÌØ×¼Ê±¼ä½ÚµãÉÏÓïÑÔÌØÕ÷ÜöÝ͵ĹéÄÉ×ۺϡ£ÕâÐ©ÌØÕ÷£¬Èçifconstexpr¡¢½á¹¹»¯°ó¶¨£¨structuredbindings£©¡¢std::optional¡¢std::variant¡¢std::any¡¢Îļþϵͳ¿â()¡¢²¢ÐÐËã·¨ÒÔ¼°´ó×ÚµÄÓïÑÔˢкͿâÔöÇ¿£¬¶¼ÊÇÉçÇø³ÉÔ±ÃǺã¾Ã˼Ë÷ºÍÆð¾¢µÄЧ¹û¡£
ÿһ¸öÌØÕ÷±³ºó£¬¶¼ÓÐһȺÈËΪÁËÍÆ¶¯Ëü½øÈë±ê×¼Ö§¸¶Á˼èÐÁµÄÆð¾¢¡£ËûÃÇ׫дÌá°¸£¬¾ÙÐÐÊÖÒÕÆÊÎö£¬±àд²âÊÔÓÃÀý£¬ÓëÆäËûίԱ»á³ÉÔ±Ïàͬ£¬½â¾öÖÖÖÖÊÖÒÕÄÑÌâºÍDZÔÚµÄ?¼æÈÝÐÔÎÊÌâ¡£
ÀýÈ磬ifconstexprµÄÒýÈ룬¼«´óµØÔöÇ¿ÁËÄ£°åÔª±à³Ì?µÄÄÜÁ¦£¬ÈÃÌõ¼þ±àÒëÔÚÄ£°åÉÏÏÂÎÄÖÐÔ½·¢Ö±¹ÛºÍ¸ßЧ¡£Õâ¸öÌØÕ÷µÄÌá³öºÍÍêÉÆ£¬ÊÇÎÞÊý´Î¹ØÓÚÄ£°åÔª±à³ÌÍ´µãÌÖÂ۵IJúÆ·¡£½á¹¹»¯°ó?¶¨£¬ÔòÈôúÂëÔ½·¢¾«Á·£¬Äܹ»Àû±ãµØ½â¹¹Ôª×é¡¢½á¹¹Ìå¡¢Êý×éµÈ¡£Õâ±³ºó£¬ÊÇ¿ª·¢ÕßÃǶÔÌá¸ß´úÂë¿É¶ÁÐÔºÍÉú²úÁ¦µÄ²»Ð¸×·Çó¡£
¶østd::optional¡¢std::variant¡¢std::anyµÈй¤¾ßµÄ¼ÓÈ룬ÔòΪ´¦Öóͷ£¿ÉÄÜȱʧµÄÖµ¡¢ÀàÐͲ»È·¶¨µÄÇéÐÎÌṩÁ˸üÇå¾²¡¢¸üÓÅÑŵĽâ¾ö¼Æ»®£¬¼«´óµØïÔÌÁË¿ÕÖ¸ÕëÒì³£ºÍÀàÐÍת»»µÄΣº¦¡£
¸üÖ÷ÒªµÄÊÇ£¬17c++µÄ½µÉú²¢·ÇÒ»õí¶ø¾Í£¬ËüÊÇÔÚC++11¡¢C++14µÈÏÈÐбê×¼µÄ»ù´¡ÉÏ£¬ÎüÊÕÁËÉçÇøµÄ·´Ï죬½â¾öÁËÏÈǰ°æ±¾ÒÅÁôµÄһЩÎÊÌ⣬²¢³¯×ŸüÏÖ´ú»¯¡¢¸üÇå¾²¡¢¸üÒ×ÓÃµÄÆ«ÏòÒ»Ö±Ñݽø¡£ÕâÊÇÒ»¸öÂÝÐýÉÏÉýµÄÀú³Ì£¬Ã¿Ò»´Î±ê×¼µÄ¸üУ¬¶¼ÊǶÔǰһ´Îµü´úµÄÐÞÕý¡¢Ôö²¹ºÍÉý»ª¡£
ÒÔÊÇ£¬¡°17c++²¢·ÇÒ»ÈËÖ®±Ê¡±Õâ¾ä»°£¬ÊǶÔÕâÖÖÕûÌåÖǻۺÍÐ×÷¾«ÉñµÄ×îºÃ×¢½â¡£ËüÐû¸æ×Å£¬ÏÖ´úc++ÓïÑÔµÄÿһ´Îǰ½ø£¬¶¼Ô´ÓÚһȺÈ˵ÄÅäºÏÔ¸¾°ºÍ²»Ð¸¶·Õù¡£Ëü²»ÊÇij¸öÌì²ÅµÄÁé¹âÒ»ÉÁ£¬¶øÊÇÎÞÊý´ÎÍ·ÄÔÅöײ¡¢ÊÖÒÕ¹¥¼áºÍÉçÇø¹²Ê¶µÄ»ã¾Û¡£µ±ÎÒÃÇʹÓÃ17c++µÄÌØÕ÷±àд´úÂëʱ£¬ÎÒÃÇÏÖʵÉÏÊÇÔÚÏíÓÃÒ»¸öÖØ´ó¡¢³äÂú»îÁ¦µÄ¿ª·¢ÕßÉú̬ϵͳËùÌṩµÄЧ¹û¡£
ÕâÊÇÒ»ÖÖÔðÈΣ¬Ò²ÊÇÒ»ÖÖ×ÔºÀ£¬ÓÉÓÚÎÒÃÇÊÇÕâ¸öΰ´óÊÂÒµµÄ?Ò»²¿·Ö£¬×ÝȻֻÊÇÒ»¸öϸСµÄ½Úµã£¬Ò²³ÐÔØ×ÅÉçÇøµÄÆÚ´ýºÍ¶ÔδÀ´µÄТ˳¡£
¡°17c++²¢·ÇÒ»ÈËÖ®±Ê¡±£¬Õâ¾ä»°µÄÉî²ã?¼ÄÒ壬Զ²»Ö¹ÓÚ¶ÔC++17±ê×¼ÐγÉÀú³ÌµÄÐÎò£¬Ëü¸üÖ¸ÏòÁË17c++ÔÚÕû¸öc++Éú̬ÖеÄÉúÃüÁ¦¡¢Ó°ÏìÁ¦ºÍδÍù·µÏì¡£Õâ¸ö¡°ÈºÌ塱µÄ×é³É£¬Ô¶±È±ê׼ίԱ»áµÄ³ÉÔ±ÃǸüΪÆÕ±é£¬ËüµÄÔË×÷·½·¨£¬Ò²Ô¶±ÈÒ»´Î´Î¾Û»áµÄͶƱ±í¾öÔ½·¢¶¯Ì¬ºÍ¶àÔª¡£
±ê׼ίԱ»áµÄÊÂÇ飬Ϊ17c++µÓÚ¨Á˼áʵµÄ»ù´¡?£¬µ«ËüµÄÕæÕýÉúÃüÁ¦£¬È´ÊÇÔÚÎÞÊý¿ª·¢ÕßÊÖÖеÃÒÔÕÀ·ÅºÍÑÓÐø¡£µ±C++17±ê×¼ÕýʽÐû²¼ºó£¬Ëü±ãÓÌÈçÒ»¿ÅÖÖ×Ó£¬ÂäÈëÁËÈ«ÇòÊý°ÙÍò¿ª·¢Õß¡ª¡ª°ü?À¨ÄÇЩΪ±ê׼Т˳¹ý´úÂëµÄÈË£¬Ò²°üÀ¨ÄÇЩ´ÓδÇ××Ô¼ÓÈë¹ý±ê×¼ÖÆ¶©¡¢È´ÌìÌì¶¼ÔÚʹÓÃc++µÄ¹¤³ÌʦÃÇ¡ª¡ªµÄÍÁÈÀÖ®ÖС£
ÕýÊÇÕâЩ¡°·ÇÒ»ÈË¡±µÄ¿ª·¢Õߣ¬½«17c++µÄÌØÕ÷ÈÚÈëµ½ËûÃǵÄÏÖʵÏîÄ¿ÖС£ËûÃÇ¿ÉÄÜÔÚÒ»¸öǶÈëʽϵͳµÄÇý¶¯³ÌÐòÖУ¬ÇÉÃîµØÔËÓÃifconstexprÀ´ÓÅ»¯²î±ðÓ²¼þÉèÖÃϵıàÒëÐÐΪ£»¿ÉÄÜÔÚ¿ª·¢Ò»¸ö¸ßÐÔÄܽðÈÚÉúÒâϵͳʱ£¬Ê¹Óýṹ»¯°ó¶¨À´¼ò»¯ÖØ´óÊý¾Ý½á¹¹µÄÆÊÎö£»¿ÉÄÜÔÚ¹¹½¨Ò»¸ö´óÐÍͼÐÎäÖȾÒýÇæÊ±£¬Í¨¹ýstd::variantÀ´¹ÜÀí²î±ðÀàÐ͵ÄäÖȾ×ÊÔ´£»Ò²¿ÉÄÜÔÚ¿ª·¢Ò»¸öÐèÒª´¦Öóͷ£í§ÒâÀàÐÍÊý¾ÝµÄ¸ß¼¶¿ò¼Üʱ£¬ÒÀÀµstd::anyÀ´ÊµÏÖÎÞаµÄ¶¯Ì¬ÀàÐÍ´¦Öóͷ£¡£
ÕâЩÏÖʵӦÓÃÖеÄ̽Ë÷ºÍʵ¼ù£¬ÊÇ17c++ÉúÃüÁ¦µÄ×îÖ±½ÓÌåÏÖ¡£Ã¿Ò»¸öbugµÄ·¢Ã÷£¬Ã¿Ò»¸öÐÔÄÜÆ¿¾±µÄÓÅ»¯£¬Ã¿Ò»´ÎÐÂÓ±Ó÷¨µÄ´´Á¢£¬¶¼½øÒ»²½¸»ºñÁË17c++µÄÄÚÔÚ£¬Ò²ÎªÎ´À´µÄÓïÑÔÉú³¤ÌṩÁËÃû¹óµÄÂÄÀúºÍ·´Ïì¡£ÄÇЩÔÚÏîĿһÏß½â¾öÏÖʵÎÊÌâµÄ¿ª·¢Õߣ¬ËûÃÇÊÇ17c++×îÖØ´óµÄ¡°Ð¢Ë³Õß¡±ÈºÌ壬ËûÃǵÄÂÄÀúºÍÐèÇó£¬Í¬ÑùÊÇÍÆ¶¯c++ÓïÑÔǰ½øµÄÖ÷Òª¶¯Á¦¡£
¡°17c++²¢·ÇÒ»ÈËÖ®±Ê¡±»¹Òâζ×Å£¬c++ÓïÑÔµÄÍÆ¹ã¡¢½ÌÓýºÍÉçÇø½¨É裬ҲÊÇÓÉÎÞÊýÈËÅäºÏÍê³ÉµÄ¡£ÓÐÄÇЩ×Î×β»¾ëµØ±àдc++½Ì³Ì¡¢²©¿Í¡¢Êé¼®µÄ×÷Õߣ¬ËûÃÇÓÃÇåÎúµÄÓïÑÔºÍÉú¶¯µÄÀý×Ó£¬½«17c++µÄÖØ´ó¿´·¨Ú¹Ê͸ø³õѧÕߣ»ÓÐÄÇЩÔÚÊÖÒÕÂÛ̳¡¢StackOverflowÉÏÄÍÐĽâ´ðËûÈËÒÉÎʵÄ×ÊÉ·¢Õߣ¬ËûÃÇÓÃ×Ô¼ºµÄÂÄÀú×ÊÖúËûÈ˽â¾ö±à³ÌÄÑÌ⣻ÓÐÄÇЩ×éÖ¯c++¾Û»á¡¢ÊÖÒÕ¾Û»áµÄÔ˶¯¼Ò£¬ËûÃǴÁËÒ»¸ö¸ö½»Á÷ºÍѧϰµÄƽ̨¡£
ÉõÖÁ£¬ÄÇЩˢÐÂc++±àÒëÆ÷£¨ÈçGCC¡¢Clang¡¢MSVC£©µÄ¹¤³ÌʦÃÇ£¬Ò²ÔÚ½«17c++µÄ¹æ·¶×ª»¯Îª¿ÉÖ´ÐеĴúÂë¡£ËûÃǵÄÊÂÇ飬ֱ½ÓÓ°Ïì×Å17c++µÄʵÏÖÖÊÁ¿¡¢ÐÔÄÜÌåÏÖÒÔ¼°¿ª·¢ÕßÌåÑé¡£Ò»¸öÓÅÒìµÄ±àÒëÆ÷£¬Äܹ»¸üºÃµØÖ§³Ö17c++µÄÐÂÌØÕ÷£¬²¢Ìṩ¸üÓѺõĹýʧÐÅÏ¢£¬Õâ¹ØÓÚÍÆ¹ãºÍÆÕ¼°17c++ÖÁ¹ØÖ÷Òª¡£
¸ü½øÒ»²½£¬17c++×÷Ϊһ¸öÕûÌ壬ËüËùÔ̺¬µÄÕÜѧºÍÉè¼ÆÍ·ÄÔ£¬Ò²ÔÚÇ±ÒÆÄ¬»¯µØÓ°Ïì×ÅÆäËû±à³ÌÓïÑÔºÍÈí¼þÉè¼Æ·¶Ê½¡£c++ÉçÇøµÄ¿ª·Å¡¢Ð×÷ºÍÒ»Á¬Á¢ÒìµÄ?¾«Éñ£¬Ò²¼¤Àø×ÅÆäËûÊÖÒÕÉçÇøÒ»Ö±Ç°½ø¡£
µ±ÎÒÃÇ¿´µ½Ò»Ð©Ðµıà?³ÌÓïÑÔÔÚÉè¼ÆÊ±£¬½è¼øÁËc++ÔÚÄ£°å¡¢·ºÐͱà³Ì¡¢RAII£¨ResourceAcquisitionIsInitialization£©µÈ·½ÃæµÄÍ·ÄÔ£¬»òÕßÔÚ¿âÉè¼ÆÉÏÌṩÁËÀàËÆstd::optional¡¢std::variantµÄÁýͳ£¬ÕâÆäÖУ¬Ò²°üÀ¨ÁË17c++¼°Æä±³ºóÖØ´óÉçÇøµÄ¡°»ØÏ족¡£
Òò´Ë£¬¡°17c++²¢·ÇÒ»ÈËÖ®±Ê¡±Õâ¾ä»°£¬ÊǶÔÒ»Öָ߶ÈÐ×÷¡¢¸ß¶ÈÉçȺ»¯µÄÊÖÒÕÑݽøÄ£Ê½µÄÔÞËÌ¡£ËüÌáÐÑÎÒÃÇ£¬ÈκÎÒ»Ïîΰ´óµÄÊÖÒճɼ¨£¬¶¼²»ÊÇÁæØêµÄ?ÊÂÒµ£¬¶øÊÇÎÞÊý¸öÌåÖǻۺÍÕûÌåÆð¾¢µÄ½á¾§¡£17c++µÄÿһ¸öÌØÕ÷£¬¶¼³ÐÔØ×ÅһȺÈ˵ÄÐÄѪ£»17c++µÄÿһ´ÎÓ¦Ó㬶¼¼¤µ´×ÅÉçÇøµÄ»îÁ¦£»17c++µÄÿһ¸öδÀ´£¬¶¼ÔÐÓýןüÆÕ±éµÄТ˳¡£
ÎÒÃÇËùʹÓõ쬲»µ«½öÊÇÓïÑÔµÄÓï·¨ºÍÌØÕ÷£¬¸üÊÇÕâ¸öÓÉÎÞÊý¿ª·¢ÕßÅäºÏ¹¹½¨¡¢Ò»Ö±¸»ºñºÍÉî¿ÌÑݽøµÄºë´ó?Éú̬¡£ÕâÊÇÒ»ÖÖ´«³Ð£¬Ò²ÊÇÒ»ÖÖ¹²´´£¬¶øÎÒÃÇÿСÎÒ˽¼Ò£¬¶¼¿ÉÒÔÊÇÕâ¸ö¾«²Ê¹ÊʵÄÒ»²¿·Ö¡£