ÔÚÌÖÂÛ17c.c++ÊÇ˵ġ°ÐÄÁé´«ÈË¡±Ö®Ç°£¬ÎÒÃÇÓбØÒªÏÈ»ØÊ×Ò»ÏÂC++µÄ?¡°Ç°ÊÀ½ñÉú¡±¡£C++£¬Ò»¸öµ®ÉúÓÚÉÏÊÀ¼Í80Äê´ú³õµÄ±à³Ì˵»°£¬×î³õÊDZ´¶û³¢ÊÔÊÒµÄBjarneStroustrupÔÚC˵»°µÄ»ù´¡ÉϽøÐÐÀ©´ó£¬Ö¼ÔÚΪϵͳ±à³ÌÌṩ¸ü¸ß¼¶µÄ³éÏóÄÜÁ¦£¬Í¬Ê±±£ÁôC˵»°µÄЧÄܺ͵ײã½ÚÔìÁ¦¡£
´ÓÃæÏò¶ÔÏó±à³ÌµÄÒýÈ룬µ½Ä£°åÔª±à³ÌµÄ¾«ÃC++һ·×ßÀ´£¬¾ÀúÁËÎÞÊý´ÎµÄµü´úÓëÑݽø¡£Ëü³ÐÔØ×ŸßЧ¡¢×³´ó¡¢½Ã½ÝµÄʹÃü£¬³ÉΪÁ˲Ù×÷ϵͳ¡¢ÓÎÏ·ÒýÇæ¡¢¸ß»úÄÜÍÆËãµÈ¶à¶à¹Ø¼üÁìÓòµÄ»ùʯ¡£
17c.c++Õâ¸ö³Æºô£¬µ½µ×Ô̺¬×ÅÔõôµÄÒâ˼£¿Ëü²¢·Çij¸öÌØ¶¨µÄÓ×ÎÒ»ò×éÖ¯£¬¶ø¸üÏñÊÇÒ»ÖÖÉçÇø¹²Ê¶£¬Ò»ÖÖ¶ÔÏÖ´úC++·¢Õ¹·½ÏòµÄÈÏ¿ÉÓë×êÓª¡£µ±Ìá¼°¡°17c.c++¡±£¬ÎÒÃÇÄÔº£Öи¡Ïֵģ¬ÍùÍùÊÇC++17³ß¶ÈËù´øÀ´µÄÄÇЩÁîÈËÐ˷ܵĸöÐÔ¡£C++17£¬×÷ΪC++11ºÍC++14Ö®ºóµÄÒ»´Î³Á´ó¸üУ¬±ê־ȡC++˵»°½øÈëÁËÒ»¸öÔ½·¢³ÉÊì¡¢Ô½·¢×³´óµÄ½×¶Î¡£
ËüÒýÈëÁËÖîÈç½á¹¹»¯°ó¶¨£¨StructuredBindings£©¡¢ifconstexpr¡¢std::optional¡¢std::variant¡¢std::any¡¢Îļþϵͳ¿â£¨£©µÈһϵÁиĸïÐԵĸöÐÔ£¬¼«´óµØÌáÉýÁË´úÂëµÄ¿É¶ÁÐÔ¡¢°²È«ÐԺͱí°×Á¦£¬Í¬Ê±Ò²Îª»úÄÜÓÅ»¯ÌṩÁ˸ü¶à¿ÉÄÜ¡£
Òò¶ø£¬ÎÒÃÇÄܹ»¶·µ¨µØËµ£¬17c.c++×îÖ±½ÓµÄ¡°ÐÄÁé´«ÈË¡±¾ÍÊÇÏÖ´úC++ÀíÏë¼°ÆäÔÚC++17³ß¶ÈϵÄ?¾ßÌåÌåÏÖ¡£Ëü¼Ì³ÐÁËC++ÔÚ»úÄÜÉϵÄÒ²§£¬µ«ÓÖͨ¹ýC++17µÄÖî¶àиöÐÔ£¬Îª¿ª·¢ÕßÌṩÁ˸üÓÅÑÅ¡¢¸ü°²?È«¡¢¸ü¸»Óвû·¢Á¦µÄ±à³Ì·½Ê½¡£Ëü²»ÊǶÔC++µÄµß¸²£¬¶øÊÇ¶ÔÆäѪÂöµÄ¼Ì³ÐÓëÉý»ª¡£
C++17µÄ?°ä²¼£¬²¢·ÇÒ»´Î¼¤½øµÄ?¸ïÃü£¬¶ø¸üÏñÊÇÒ»´Î¾«ÐIJ߶¯µÄ¡°½ø»¯¡±¡£ËüÎüÊÕÁËÉçÇø¶àÄêµÄʵ¼Ê¾ÑéºÍÉè¼ÆÀíÏ룬½«Ò»Ð©ÒѾÔÚÏÖʵ¿ª·¢Öб»Ö¤Ã÷׿ÓгÉЧµÄÉè¼ÆÄ£Ê½ºÍ˵»°¸öÐÔÕýʽÄÉÈë³ß¶È¡£
½á¹¹»¯°ó¶¨£¨StructuredBindings£©£ºÕâ¸ö¸öÖ°Äܹ»ËµÊÇC++17ÖÐ×îÊÜÓ½ÓµÄ?¡°Ã÷ÐÇ¡±Ö®Ò»¡£ËüÔÊÐíÎÒÃǽ«Ôª×飨tuple£©¡¢½á¹¹Ì壨struct£©¡¢Êý×飨array£©ÖеÄÔªËØ¡°½â°ü¡±µ½¶ÀÁ¢µÄ±äÁ¿ÖУ¬´ó´ó¼ò»¯ÁË´Ó¶à¸ö·µ»ØÖµÖÐÌáÈ¡Êý¾ÝµÄ²Ù×÷¡£
ÀýÈ磬ÔÀ´±ØÒª·±ËöµÄstd::getÀ´½Ó¼ûÔª×éÔªËØ£¬´Ë¿ÌÄܹ»Ö±½Óͨ¹ýÀàËÆPython½â°üµÄ?·½Ê½ÊµÏÖ£¬ÈôúÂëÔ½·¢Ö±¹ÛÒ×¶®¡£ifconstexpr£ºÕâÊÇÒ»¸ö׳´óµÄ±àÒëÆÚǰÌáÅжÏÓï¾ä¡£Ó봫ͳµÄifÓï¾ä·ÖÆç£¬ifconstexprÖеÄǰÌáÔÚ±àÒëʱ¾Í»á±»È·¶¨£¬Ö»ÓÐÂú×ãǰÌáµÄÄǸö·ÖÖ§²Å»á±»±àÒ룬²»?Âú×ãµÄÄǸö·ÖÖ§Ôò»á±»ÆëÈ«ºöÂÔ¡£
Õâ¶ÔÓÚ±àд»ùÓÚÄ£°åµÄ·ºÐÍ´úÂëÓÈΪÓÐЧ£¬Äܹ»Ô¤·ÀÒòÀàÐͲ»Æ¥Åä¶øµ¼ÖµıàÒëÃýÎ󣬲¢ÄÜÌìÉú¸üÓÅ»¯µÄ´úÂë¡£std::optional¡¢std::variant¡¢std::any£ºÕâÈý¸ö¸öÐÔ¹²Í¬¹¹½¨ÁËÒ»¸ö¸ü׳´óµÄÀàÐÍϵͳ¡£std::optionalÓÃÓÚ°µÊ¾Ò»¸ö¿ÉÄÜûÓÐÖµµÄ±äÁ¿£¬ÓÐЧ½â¾öÁËC++ÖпÕÖ¸Õ루nullpointer£©´øÀ´µÄºÃ¶à°²È«Òþ»¼£¬Ê¹µÃ´úÂëÔ½·¢×³Êµ¡£
std::variantÔòÊÇÒ»ÖÖÀàÐͰ²È«µÄ½áºÏÌ壨union£©£¬Äܹ»´æ´¢¶àÖÖÔ¤Ô¼ÒåÀàÐÍÖеÄÒ»ÖÖ£¬²¢ÌṩÁ˰²È«½Ó¼ûÆäµ±Ç°´æ?´¢ÖµµÄ·½Ê½¡£std::anyÔòÊÇÒ»¸ö¸üͨÓõÄÈÝÆ÷£¬Äܹ»´æ´¢ÈκÎÀàÐ͵ÄÖµ£¬µ«±ØÒªÏÔʽ½øÐÐÀàÐÍת»»£¬ÌṩÁ˸ü´óµÄ½Ã½ÝÐÔ¡£Îļþϵͳ¿â()£ºC++17ÖÕÓÚ´øÀ´ÁËÔÉúµÄÎļþϵͳ²Ù×÷ÄÜÁ¦£¬¿ª·¢ÕßÎÞÐèÔÙÒÀÀµÆ½Ì¨ÓйصÄAPI£¬¾ÍÄܹ»·½±ãµØ½øÐÐÎļþºÍĿ¼µÄ´´½¨¡¢É¾³ý¡¢¸´Ôì¡¢ÒÆ¶¯µÈ²Ù?×÷£¬¼«´óµØ¼ò»¯ÁË¿çÆ½Ì¨µÄÎļþϵͳ±à³Ì?¡£
ÕâЩ¸öÐÔµÄÒýÈ룬ʹµÃC++ÔÚά³ÔìäÖ÷ÌâÓÅÊÆµÄ±äµÃÔ½·¢Ò×Óᢰ²È«£¬²¢ÇÒ¸ü¾ß±í°×Á¦¡£17c.c++µÄ¡°ÐÄÁ顱¾ÍÔÚÓÚÓµ±§²¢´¿ÊìʹÓÃÕâЩÏÖ´ú»¯µÄ¸öÐÔ£¬ÈÃC++µÄ´úÂë²»ÔÙÊDZùÁ¹¡¢¸´ÔӵķûºÅ¶ÑÆö£¬¶øÊÇ¿ÉÄÜ´«?µÝÇ峺Òâͼ¡¢ÊµÏÖ¸ßЧÔËÐеÄÒÕÊõÆ·¡£Ëü´ú?±í×ÅÒ»ÖÖ²»ÐÝ×êӪ׿Խ¡¢Óµ±§Ë¢Ðµıà³Ì̬¶È¡£
½«17c.c++½ö½öÀí½âΪC++17³ß¶È×ÔÉí£¬Î´Ãâ¹ýÓÚÏÁÕ¡£ÕýÈç¡°ÐÄÁé´«ÈË¡±µÄÔ¢Ò⣬Ëü¸üÇ¿µ÷µÄÊÇÒ»ÖÖÀíÏëµÄ¼Ì³Ó×¢Ò»ÖÖÎÄ»¯µÄ?´«³Ð£¬ÒÔ¼°ÔÚʵ¼ÊÖеĺëÑï¹â´ó?¡£17c.c++µÄÐÄÁ飬¸üÌå´Ë¿ÌÄÇЩ»ý¼«Óµ±§C++17£¬²¢½«Æäת»¯ÎªÏÖʵ³ö²úÁ¦¡¢Íƶ¯C++ÉçÇø·¢Õ¹µÄ¿ª·¢ÕߺÍÏîÄ¿ÉíÉÏ¡£
C++ÉçÇøÊÇ17c.c++ÐÄÁé´«³Ð?µÄ³ÁÒªÔØÌ塣ȫÇòÁìÓòÄÚµÄ?¿ª·¢ÕßÃÇͨ¹ý¸÷ÀàÇþ·£¬·ÖÏí×ÅC++17µÄʹÓþÑé¡¢×î¼Ñʵ¼Ê£¬ÒÔ¼°¶Ô½«À´C++·¢Õ¹µÄ˼ÂÇ¡£
¼¼Êõ²©¿ÍÓëÔÚÏßÂÛ̳£ºÎÞÊý¼¼Êõ²©¿Í¡¢StackOverflow¡¢RedditµÈÉçÇøÆ½Ì¨ÉÏ£¬¿ª·¢ÕßÃÇÈÈÁÒ»áÉÌ×ÅC++17µÄÿһ¸öиöÐÔ¡£´Óµ¥Ò»µÄʾÀý´úÂëµ½¸´ÔӵĻúÄÜ·ÖÎö£¬ÔÙµ½ÏÖʵÏîÄ¿ÖеÄÀûÓð¸Àý£¬ÕâЩ·ÖÏí¼«´óµØ½µµÍÁËиöÐԵĽø½¨Ãż÷£¬¼Ó¿ìÁËÆäÔÚ¿ª·¢ÕßȺÌåÖеı鼰¡£
¼¼Êõ´ó»áÓë×êÑл᣺CppCon¡¢MeetingC++µÈ¹ú¼ÊÐÔµÄC++¼¼Êõ´ó»á£¬ÊÇչʾ×îÐÂ×êÑгɾ͡¢»¥»»Ç°ÑØË¼ÏëµÄ³ÁҪƽ̨¡£ÔÚÕâЩ³¡Ëù£¬¹ØÓÚC++17µÄ¸÷ÀàÉî¿Ì̽Çó²ã³ö²»?ÇºÜ¶àÓÅÁ¼µÄÑݽ²Õß³ÉΪÁËC++17ÀíÏëµÄÓÐÁ¦´«²¼?Õß¡£¿ªÔ´ÏîÄ¿£ººÜ¶à³ÛÃûµÄ¿ªÔ´ÏîÄ¿£¬ÈçGCC¡¢Clang¡¢Boost¡¢QtµÈ£¬¶¼ÔÚ»ý¼«Ö§³ÖºÍѡȡC++17µÄ³ß¶È¡£
ËüÃÇÔÚÏÖʵÏîÄ¿ÖÐÑéÖ¤ÁËC++17¸öÐÔµÄÓÐЧÐԺͿ¿µÃסÐÔ£¬²¢ÎªÆäËû¿ª·¢ÕßÌṩÁ˹óÖØµÄ²Î¿¼¡£Äܹ»Ëµ£¬ÕâЩÏîÖ÷ÕŹ±Ï×ÕßÃÇ£¬ÕýÊÇ17c.c++ÐÄÁé×î¼á¶¨µÄ¼ùÐÐÕß¡£
17c.c++µÄ?ÐÄÁ飬¾ø²»½ö½öÊÇÀíÂÛÉϵÄ×·Åõ£¬¸ü³ÁÒªµÄÊÇÔÚÏÖʵ¿ª·¢ÖеÄÀûÓá£C++17µÄÒýÈ룬ΪºÜ¶àÁìÓòµÄ?Èí¼þ¿ª·¢´øÀ´ÁËÏÔÖøµÄÌáÉý¡£
¸ß»úÄÜÍÆËãÓë¿ÆÑ§ÍÆË㣺ÔÚ±ØÒª¼«Ö»úÄܵÄÁìÓò£¬C++Ò»ÏòÊÇÊ×Ñ¡¡£C++17µÄиöÐÔ£¬ÈçifconstexprºÍ¸üÓÅ»¯µÄÄ£°åÔª±à³ÌÄÜÁ¦£¬Ê¹µÃ¿ª·¢Õß¿ÉÄܱàд³ö?¼È¸ßЧÓÖÒ×ÓÚÊØ»¤µÄÍÆËãÃܼ¯ÐÍ´úÂë¡£std::optionalµÄÀûÓÃÒ²Ìá¸ßÁËÊýÖµÍÆËãÖжÔȱʧÊý¾ÝµÄ´¦Öó°ôÐÔ¡£
ÓÎÏ·¿ª·¢£ºÓÎÏ·ÒýÇæµÄ¿ª·¢ºÍÓÎÏ·×ÔÉíµÄÔì×÷£¬¶Ô»úÄÜÓÐ׿«¸ßµÄÒªÇó¡£C++17µÄ½á¹¹»¯°ó¶¨¼ò»¯ÁË´Ó¸´ÔÓÊý¾Ý½á¹¹ÖÐÌáÊØÐÅÏ¢µÄ²Ù×÷£¬std::variantÔòΪ״̬ÖÎÀíºÍÐÂÎÅ´«µÝÌṩÁ˸ü½Ã½Ý¡¢¸ü°²È«µÄ·½Ê½¡£Îļþϵͳ¿âµÄÀûÓÃÒ²·½±ãÁËÓÎÏ·×ÊÔ´µÄ¼ÓÔØºÍÖÎÀí¡£
ǶÈëʽϵͳÓëÎïÁªÍø£º¹ÌÈ»C++17ÒýÈëµÄһЩ¸öÐÔ¿ÉÄܶÔ×ÊÔ´ÊÜÏÞµÄǶÈëʽϵͳ×é³ÉÌôÕ½£¬µ«ÆäÖ÷ÌâÀíÏ롪¡ªÈçÌá¸ß´úÂëµÄ?°²È«ÐԺͱí°×Á¦¡ª¡ª¶ÔÓÚÎïÁªÍøÉ豸Éϵĸ´ÔÓÂß¼±àдÒÀÈ»ÓÐ×ųÁÒªµÄÁìµ¼Òâ˼¡£¿ª·¢ÕßÄܹ»Æ¾¾ÝÏÖʵÇé¿ö£¬ÓÐÑ¡ÔñÐÔµØÀûÓÃC++17µÄ¸öÐÔ£¬»òÕß´ÓÖÐÂÞÖÂÉè¼ÆË¼Ïë¡£
½ðÈÚ½¨Ä£ÓëÂòÂôϵͳ£ºÔÚ½ðÈÚÁìÓò£¬¿ìÂʺÍÕýÈ·ÐÔÖÁ¹Ø³ÁÒª¡£C++17µÄ׳´ó±í°×ÄÜÁ¦ºÍÀàÐͰ²È«¸öÐÔ£¬ÓÐÖúÓÚ¹¹½¨¸ü¿¿µÃס¡¢¸üÒ×ÓÚÀí½âµÄ½ðÈÚÄ£ÐͺÍÂòÂôËã·¨¡£
17c.c++²¢?·ÇÖյ㣬¶øÊÇC++·¢Õ¹¹ý³ÌÖеÄÒ»¸ö³ÁÒªÕ¾µã¡£Ëæ×ÅC++20¡¢C++23µÈºóÐø³ß¶ÈµÄ²»ÐÝÍÆ³ö£¬C++˵»°×ÔÉí»¹ÔÚ³ÖÐø½ø»¯¡£17c.c++µÄÐÄÁ飬ÔÚÓÚÓµ±§?±ä¶¯£¬²»?¶Ï½ø½¨£¬²¢½«×îеļ¼Êõ³É¾ÍÈÚÈëµ½×Ô¼ºµÄʵ¼ÊÖС£
ÄÇЩ»ý¼«²Î¼ÓC++20г̡¢¸ÅÏ루Concepts£©¡¢ÁìÓò£¨Ranges£©µÈиöÐԵĿª·¢Õߣ¬ÄÇЩÔÚÏÖʵÏîÄ¿ÖÐʹÓò¢ÍƹãÕâЩиöÐÔµÄÍŶӣ¬ËûÃDzÅÊÇ17c.c++ÐÄÁéµÄÕæÕý¡°¼Ì³ÐÕß¡±ºÍ¡°ºëÑïÕß¡±¡£ËûÃǼ̳ÐÁËC++׳´óµÄ»úÄÜ»ùÒò£¬Ò²´«³ÐÁËÏÖ´úC++ËùÌᳫµÄÓÅÑÅ¡¢°²È«¡¢¸ßЧµÄ±à³ÌÀíÏ룬²¢ÓÃ×Ô¼ºµÄÐж¯£¬²»ÐÝΪC++ÕâÃŹÅÀ϶øÓÖ³ä³â»îÁ¦µÄ˵»°×¢ÈëеÄÐÔÃüÁ¦¡£
ËùÒÔ£¬µ±ÎÒÃÇ»áÉÌ¡°17c.c++ÊÇ˵ġ®ÐÄÁé´«ÈË¡¯¡±Ê±£¬´ð°¸²»ÔÙÊÇÒ»¸öµ¥Ò»µÄÃû×Ö£¬¶øÊÇÒ»¸öÓÉÎÞÊý¿ª·¢Õß¡¢ÎÞÊýÏîÄ¿¡¢ÎÞÊý´Î¼¼Êõ·ÖÏíºÍÅöײËù×é³ÉµÄ»îÆÃȺÏñ¡£ËûÃǹ²Í¬»ã¾Û³ÉÁËÏÖ´úC++µÄº£³±£¬²»ÐÝÍÆ¶¯×ÅÈí¼þ¿ª·¢µÄÌìǵÏòǰÑÓ³¤¡£17c.c++µÄ¡°ÐÄÁé´«ÈË¡±£¬ÕýÊÇÿһ¸öÖÂÁ¦ÓÚÓÃC++´´Ôì¸üÃÀºÃ¡¢¸üÖÇÄܽ«À´µÄ¿ª·¢Õß¡£