ã¿ãªããããã«ã¡ã¯ïŒ
æè¿ã次ã®C ++ Siberia 2019ãããã·ãã«ã¹ã¯ã§éå¬ãããŸããã ãããªã¬ããŒãã®å ¬éæºåäžã§ãã ãã®æ©äŒãå©çšããŠãé »ç¹ã«äŒè°ãæ¬ åžããããšã®ãªãé »ç¹ã«è¬æŒãè¡ã2人ã®ã¹ããŒã«ãŒãšè©±ãããŸãããAntonPolukhin antoshkkaãšPavel Filonovã§ãã
ã¢ã³ãã³ã¯ãC ++æšæºåã¯ãŒãã³ã°ã°ã«ãŒãã®åœéäŒè°ã§ISOã®ãã·ã¢ã代衚ããŠãããC ++èšèªæšæºãBoostã©ã€ãã©ãªãBoost C ++ Application Development Cookbookã®ããã€ãã®æ¿èªãããææ¡ã®èè
ã§ãã
Pavelã¯ãKaspersky Labã®éçºè
ããã³ç 究è
ã§ãããµã€ããŒç©çã·ã¹ãã ã®ã»ãã¥ãªãã£ã確ä¿ããããã®æ©æ¢°åŠç¿æ³ã®é©çšã«æºãããæè²ã«åŸäºããŠããŸãã äŒè°ã®ãããªãåŸ
ã£ãŠããéã«ãäŒè©±ã®ãã©ã³ã¹ã¯ãªãããèªãããšããå§ãããŸãã
ã»ã«ã²ã€ïŒã¿ãªãããããã«ã¡ã¯ïŒ ãããã»ã«ã²ã€ãã©ãããã§ããçŸåšãC ++ã·ããªã¢äŒè°ã«åå ããŠããŸãã ä»æ¥ã¯ã¢ã³ãã³ã»ãã«ãã³ãšããã«ã»ãã£ãããã®ã¬ã®ã¥ã©ãŒã¹ããŒã«ãŒãšè©±ããŠããŸãã ãå æ°ã§ããïŒ
ããã«ïŒãããïŒ ããã·ãã«ã¹ã¯ã«æ»ããŸããã
ã»ã«ã²ã€ïŒä»ãç§ãã¡ã¯ã·ããªã¢ã®æ£®æã«çŽæ¥çŽé¢ããŠããŸãã
PavelïŒçŽ æŽãããçºããçŽ æµãªäººã ããšãŠãèå³æ·±ããããã¯ã
ã¢ã³ãã³ïŒãããŠãçŸæç¹ã§ã¯ã¢ã¹ã¯ã¯ãããæããã§ãã
SergeyïŒä»æ¥ã¯C ++ã«ã€ããŠã話ããããšæããŸãããC ++ã«ã³ãã¡ã¬ã³ã¹ã§ã¯å¥åŠã«èãããŸãã ããŸããŸãªããšã«ã€ããŠã ããšãã°ãã¢ã¹ã¯ã¯ããããã·ãã«ã¹ã¯ãŸã§ã®äŒè°ã«åå ããçç±ã«èå³ããããŸãããããã¯åããŠã§ã¯ãããŸããã
PavelïŒç§èªèº«ãäž»ãªçç±ããããšèšããŸã-誰ãã«äœããäŒããã®ãæ¬åœã«å¥œãã§ãã ç§ã¯èªåã§ãããä¿ã€ããšãã§ããŸããã ããã€ãã®æ°ããèå³æ·±ãããšãåŠã¶ãšããäžæ¹ã§ããããæ¬åœã«è¯ããé¢çœããã©ãããåžžã«çããŸãã人ã ã«äŒããŠã圌ããããã«ã©ã®ããã«åå¿ããããèŠãå¿ èŠããããŸã-圌ããåãåºãããåã³æ¥ãããã«é Œããã©ããã ãããŠã圌ãã¯åŸãåããªããšããäºå®ããå€æããŠã圌ãã¯ããããæããŸããã人ã ã¯ããããç§ãšäžç·ã«ç Žè£ããŠãããã®ã奜ãã§ãã ç§ã¯ããããèãã話ãåãããã§ãã ããã«ããã ä¹ãããšã¯åžžã«åã³ã§ãã ããã·ãã«ã¹ã¯ã«åããŠè¡ã£ãã®ã¯C ++ã·ããªã¢äŒè°ã§ã2åç®ãããã·ãã«ã¹ã¯ã§ããã ãã®ããã«ãç§ã¯ããã«çããªãã§ãããã
ã¢ã³ãã³ïŒä»ã®éœåžã«æ è¡ããã®ã¯ãã€ãé¢çœãã§ãã ããã·ãã«ã¹ã¯ã¯çŽ æŽãããã§ããã¢ã¹ã¯ã¯ãããæããã§ãã æ¿¡ããéªã¯éŠã®éŠçã«æµããŸããã ã¯ã³ãã©ã¹ïŒ
ã»ã«ã²ã€ïŒãã¡ãããç§ã¯äžèª å®ã§ããã®è³ªåã«ã¯çç±ããããŸãã ç§ã¯ãã¯ãŒãã³ã°ã°ã«ãŒã21ã®æãåºãšãç§ã®æèŠã§ã¯ããããã©ã®ããã«çŸããããèšæ¶ããŠããŸãã ç§ã¯å®éã«ããããã人ã®è©±ãèãããšã«èå³ããããŸãã ãã·ã¢ãå§å¡äŒã®ä»£è¡šã«ãªã£ãã®ã¯ã©ãããŠã§ããïŒ
ã¢ã³ãã³ïŒãµã³ã¯ãããã«ãã«ã¯ã®ãã·ã¢ã®C ++ã§èµ·ãã£ãã 劻ã®ãŽã¢ã»ãã·ã£ããïŒ ãã€ãã¿ãŒ ïŒããã§ã«ç«ã£ãŠãããšãã«ãšã¬ããŒã¿ãŒã«å ¥ã£ãã®ãèŠããŠããŸããããã¯åœéæšæºåå§å¡äŒã«åå ããæ¹æ³ãèŠã€ããã®ã«æé©ãªæ¹æ³ã§ããããšã«æ°ä»ããŸããã å®éãç§ã¯åœŒã«ããã«ã€ããŠå°ããŸããã ãããŠããŽã¢ã¯æ¬¡ã®ãšããã§ããããåç¥ã®ããã«ãä»æ¥ãããªãã¯ç§ã«ãã®è³ªåãæãä»ãæåããã¯ã»ã©é ãã§ãã Yandexã®äººã ãããªãã«è¿ã¥ããŠããŸãããã ç§ã¯Yandexã§çæéåããŠãããšçãããããã®äººã ãã©ã®ããã«èŠããã®ãã説æããããã«é Œã¿ãŸããã ãŽã¢ã¯ç§ã«ãã¹ãŠãèªã£ãã ç§ã¯åœŒã説æãã人ã ã«è¡ããŸããã ãããŠãYandexã¯C ++ã«åŸããåãããåœéçãªå§å¡äŒã§ãã·ã¢ã®éçºè ã®å©çã代衚ããäžçš®ã®ã¯ãŒãã³ã°ã°ã«ãŒããäœæããããšããŠããããšãæ¬åœã«å€æããŸããã ã°ã«ãŒããäœæãããŸããã Yandexã®åŸæ¥å¡ã ãã§ãªããä»ã®äŒç€Ÿã®åŸæ¥å¡ãããŸãã
PavelïŒçŸåšãKaspersky Labã®Anton Bikineevãã°ã«ãŒãã®äžå¡ãšããŠåããŠããŸãã ä»æ¥ãæ®å¿µãªããã圌ã¯ç§ãã¡ãšäžç·ã§ã¯ãããŸããã
ã¢ã³ãã³ïŒãšããã§ãã¢ã³ãã³ã¯éåžžã«ã¯ãŒã«ãªããšãããŠããŸã-圌ã¯è ãšèã§ã³ã³ãã€ã©ã«ç»ããç§ãã¡ã®ææ¡ã®1ã€ãå®è£ ããããšããŸãã 圌ã¯ãå€å°ãªããšãåäœãããããã¿ã€ãããæã£ãŠããŸãã
PavelïŒãšããã§ã圌ã¯ããªããææ¡ãã³ã³ãã€ã©ã«å®è£ ãããããéãææ¡ãæžããšããªãã«äžå¹³ãèšã£ãŠããŸãã
ã¢ã³ãã³ïŒã¯ããããã§ãã
SergeyïŒã€ãŸããããã®ã¢ã³ãã³ããããšãã¯ãã¯ãŒãã³ã°WGã®ã³ã¢ã°ã«ãŒããšããŠæ©èœããŠããŸããïŒ äŒè°ãããã«é¢äžãããšèããŠããããã§ãã ãããã©ãã»ã©äŸ¿å©ã§é¢çœãããã¿ããªãç解ããŠãããããšãæåŸ ããŠããŸãã ã¯ãŒãã³ã°ã°ã«ãŒãã«åå ããããã«Yandexã§åãå¿ èŠã¯ãªãããšãããããŸããã
ã¢ã³ãã³ïŒäžè¬ã«ãã¢ã€ãã¢ãC ++æšæºåå§å¡äŒã«äŒãããããã©ã¹ã«ãªã£ããããããã«ãã¯ãŒãã³ã°ã°ã«ãŒãã«åå ããå¿ èŠã¯ãããŸããã
PavelïŒãã ãµã€ãã«è¡ã£ãŠææ¡ãæ®ãããšãã§ããããã§ãã
ã¢ã³ãã³ïŒã¯ãã https ïŒ //stdcpp.ru㧠ã ããã§ã¢ã€ãã¢ãå ±æããä»ã®åå è ã®ã¢ã€ãã¢ã«ã€ããŠè©±ãåãããšãã§ããŸãã å€ãã®ã¢ã€ãã¢ããããŸããããã¹ãŠãåŒãåããã®ã«ååãªæããããŸããã ãããã£ãŠã人ãæ¥ãŠãã¢ã€ãã¢ã®å°ãªããšãããã€ãã®ææ¡ã®ç¹å®ã®èæ¡ãæžãå§ãããšã誰ã«ãšã£ãŠãç°¡åã«ãªãããããã®ã¢ã€ãã¢ã¯ããã«å§å¡äŒã«å±ããŸãã
ããã«ïŒã¢ã³ãã³ãããªãã¯ã©ãæããŸããïŒ
ã¢ã³ãã³ïŒç§ãã¡ã¯ããã®ãã¹ãŠã®éçåå°ã®æ¹åæ§ã決ããŸããã ä»èŠããŠããããã«ã constexpr_vector
-constexprã³ã³ããã¹ãã§ã®ã¿äœ¿çšã§ããå¥ã®ã¯ã©ã¹ãäœæããææ¡ããããŸããã DavidãåºãŠïŒDavid VandevoordeïŒãã®ããšã«ã€ããŠè©±ããŸãã ããŒã«å
šäœããããããã«å«ãã§ããŸãã ãããŠã圌ã¯æ¬¡ã®ãããªãã®ã§ãããããããæšæºã©ã€ãã©ãªã®ãã¹ãŠã®ã¯ã©ã¹ããã®ããã«è€è£œãããã®ã§ããïŒ ä»ã«æ¹æ³ã¯ãããŸãããã ãããããconstexpr_new?
ããããããæ©èœããŸããã ãããŠç§ã¯ïŒãã£ã¬ã³ãžãåãå
¥ããŸããã ãããŠ3ãæåŸãç§ãšSasha Zaitsevã¯ã std::vector
ãconstexprã³ã³ããã¹ãã§åäœã§ããããã«ãããããã¿ã€ããäœæããŸããã clangã§çŽæ¥åäœããŸããã³ã³ãã€ã©ãŒã§ããäœãããå¿
èŠã¯ãããŸããã§ããã ç§ãã¡ã¯ãããããããã«èŠããŸããããšåœŒã¯èšããŸãã ããããã§ããïŒ ããããããã§ããŸãããŸãããã åæããŸããã 圌ã¯èšãââãŸãïŒããããããã¡ãããã§ããŸãã ã¡ãªã¿ã«ããªãã ãã ãã®åŸã圌ã¯constexpr_vector
ã䜿çšããŠè«æãconstexpr_vector
ããæšæºã©ã€ãã©ãªã®ãã¹ãŠã®ã³ã³ãããconstexprã³ã³ããã¹ãã䜿çšã§ããããã«äœæ¥ãéå§ããŸããã ã¯ãŒãã³ã°ã°ã«ãŒãã®ç§ãã¡ã¯åºæ¬çã«constexprã®ãã¹ãŠã®ã¢ã«ãŽãªãºã ãèŠéããLouis Dionã¯constexprã®èŠéããã³ã³ãããäœæããDavidã¯èšèªã®ã³ã¢ãäœããã®constexprãå·§ã¿ã«äœæããŸãã
SergeyïŒããã¯ã¢ãã±ãŒã¿ãŒã«ã€ããŠã§ããïŒ
ã¢ã³ãã³ïŒã¯ãã ã¢ãã±ãŒã¿ãŒã«åé¡ããããŸããã
ã»ã«ã²ã€ïŒãããïŒ ãããã¯å€§ããªå€åã®ããã§ãã
ã¢ã³ãã³ïŒããã«6幎ã圌ãã¯æšæºã«è¡šç€ºãããŸã;-)
PavelïŒãããããããããããã«æå ã§è§Šãæéã¯ãªãã§ãããã
ã¢ã³ãã³ïŒ constexprã³ã³ãããŒã¯20çªç®ã®æšæºã«ããå¿ èŠããããŸãã constexprã¢ã«ãŽãªãºã ã¯ééããªããããããŸãã
PavelïŒããã¯ã»ãã®æ°å¹Žã§ããïŒ
SergeyïŒ 2019幎ãå§ãŸã£ãå Žåã20çªç®ã®æšæºã¯2020幎ã®ã©ããã«ãªããŸãã ãŸããã¯ããããããæ°å¹Žã
PavelïŒããã«ãç§ãæ£ããèŠããŠããã°ãã³ã³ãã€ã©ã¯åžžã«æšæºèšè¿°åãšæ¯èŒããŠé ããŠããŸãããä»ã§ã¯ãã³ã³ãã€ã©ãä»ããŠå®éšãšããŠäœããæåã«å®è¡ããããšããããšããããããŸã-ã¢ã³ãã³ãããŠããããšã¯ããªããäŒããŠããããšã§ãã ãããŠãããã ãã§æšæºã®åœ¢ã§ãããåãã
ã»ã«ã²ã€ïŒä»¥åãç§ã¯èŠããŠããããŸã TRããã£ãã
ã¢ã³ãã³ïŒãããã圌ãã¯TSãæ¯æããŠæããããŸããã ããããå€æŽãããŸãããã¯ã:-)
SergeyïŒã€ãŸããçŸåšã®ææ°ã®ã³ã³ãã€ã©ã§ã¯ãåå空éts
æ¥ç¶ããããšãã§ããŸããïŒ
AntonïŒçŸåšãã³ã³ãã€ã©ã®æ¡åŒµæ©èœãåãããã§ãã¯ããã¯ã¹ã§åŠçãè¡ãããŠããŸããã€ãŸããCoroutines TSããããClangãšVisual Studioã§è©Šãããšãã§ããŸãã TSã¢ãžã¥ãŒã«ããããã©ãã§ãåãã§ã¯ãããŸããã ã©ã€ãã©ãªãŒããã«ãã¹ã¬ããããããã¯ãŒãã³ã°ã«é¢ããTSããããŸãã
SergeyïŒããã¯ãŸã ã¢ãã±ãŒã¿ãŒãåããèšèªã®äžæ žã§ããããããç¹å®ã®åå¥ã®ãã©ã°ã«ãã£ãŠèšå®ãããŠããŸããïŒ
ã¢ã³ãã³ïŒå¥ã®ãã©ã°ã¯äžããããŸããã DavidïŒDavid VandevoordeïŒ-ã³ã³ãã€ã©éçºè ã®1人ãEDGããã³ããšã³ãéçºè ã®1人ã圌ã¯ã¡ããã©ãããå®è£ ããŸããã ããã¯å€§äžå€«ãäœãå£ããªããä»ã®æ°ãããã®ã欲ãããªããããã§å®éšããã®ã¯æå³ããªãããã¹ãŠãããŸããããšä¿¡ããããŠããŸãã ããã§ãããåŒã£åŒµããŸãã
SergeyïŒãšãŠãã¯ãŒã«ã§ãã
PavelïŒãšããã§ãäŒè°ã®ãããã¯ã«æ»ããŸãã ã¢ã³ãã³ãããªãã¯C ++ãã·ã¢ã ãã§ãªããCPP ConãMeeting CPPãCPP Nowãªã©ãå€åä»ã«ãé »ç¹ã«è¬æŒããŠããŸãã ã©ãããããããããªãã¯éããèŠããã®ãæ¯èŒããŠèšãããšãã§ããŸããïŒ ãããã¯åã人ã§ãããåããããã¯ã§ããããããšããããªããã©ã®ããã«åããŠãããã«ãã£ãŠãäŒè°ã®äž»é¡ã䜿çšèšèªãå€ãããšæããŸããïŒ
ã¢ã³ãã³ïŒååãšããŠããã·ã¢ã§ã®äŒè°ã«ã¯éåžžã«åŒ·åãªéçºè ããããšæããŠããŸãã éåžžã«è€éãªãããã¯ãäŒããããšãã§ããŸãã ç§ã¯å¥ã®äŒè°ã®ã©ããã§éåžžã«é£ãããããã¯ã§ããmagic_getã話ãããšããŸããããç§ã話ããããã«ãå€éšåºæ¿ã«åå¿ããªããªã£ãç·ãæãåºããŸãã 圌ã¯ãã 座ã£ãŠç¹æ» ããŸããã åè«ãæ¿å ¥ã§ãããããããªããšæã£ã-ç§ã¯ãããæ¿å ¥ããåè«ãèšã£ã-圌ã¯ãŸã°ããããããªãã£ãã ãããã圌ã¯åããŸããã ããããããããã©ããã§ãã®ãããªããŒãã³ã¢ãäŒããæ¹ãè¯ãã§ãããã
ã»ã«ã²ã€ïŒãããŠã¢ã³ãã³ããããšãã ãã«ã ããã¯ãäŒè°ã®1ã€ã§magic_getã«ã€ããŠè©±ããŠããå€é£ã®æã«è©±ãæãåºããã ãã§ãã
PavelïŒã¢ã³ãã³ã¯ãã®äŒè°ã«åºåžããããªããéåžžã«é£ãã質åãããã®ã§ã圌ã¯ããªããèšã£ãããšãæããã«è¶ ããŸããã ã¿ã€ãã®ãªã¹ãã§ã®æ€çŽ¢ã¯ç·åœ¢ã§ã¯ãªãããã€ããªæ€çŽ¢ã䜿çšããŠããããã§ãã ããªãã¯åœŒã«çããŠã圌ãã©ããã£ãŠãããç¥ã£ãŠããã®ãå°ããŸããã ã¢ã³ãã³ã¯ãã¬ããŒãã®åå€ãGitHubã«ããmagic_getã®ãœãŒã¹ãèªãã§ããŠããã®ä»çµã¿ãç解ããããšããŠãããšè¿°ã¹ãŸããã
ã¢ã³ãã³ïŒã¢ã³ãã³ããããšããšã®å€ãå¥åŠãªè©±ããããŸãã ç§ãã¡ããäºããç¥ãåã§ãã£ãŠããBoostã§åœŒãã©ã®ããã«ã³ãããããããèŠãŸããã ãã®åŸã圌ãClangãšconstexprã®äž¡æ¹ã§ãã«ãªã¯ãšã¹ããè¡ã£ãããšãããããŸããã ç§ã¯ãã®ãã«ãªã¯ãšã¹ããèŠãŠãäœããã®çç±ã§ãã®ååãæãåºããŸããã ãããããClangã«ã³ãããããBoostã®ç·ãçŽ æŽãããããã§ãïŒ ãã®åŸãC ++ã§ã·ããªã¢ã§17çªç®ã®ãã©ã¹ã«ã€ããŠãconstexprã«ã€ããŠããããŠç·ãèŽè¡ããå«ã³ãŸãããã¯ããç§ã¯ãããå°ãClangã§ãããŸãããã ãããªãã¯ã¢ã³ãã³ããããšãã§ãïŒã
SergeyïŒ C ++ Siberiaãæ¥ç¶ããŸãã
PavelïŒãŸããæ£ããèŠããŠããã°ããã¹ã¿ãŒã¯ã©ã¹ã§æåã®å®éšãèšå®ãå§ããã®ã¯ã·ããªã¢ã§ããã æåã«åœŒãã¯è©ŠããŠã¿ãŠããã®ãã©ãŒããããããŸããããã©ããã確ãããŸããã æåŸã®3ã4åã®äŒè°ã®å®è·µã瀺ãããã«ãC ++ãã·ã¢ãæ°ãããšãæ°ãã圢åŒãéåžžã«ããŸããã£ãããã«æããŸãã ããšãã°ã40åã§ã¯ãªããããã€ãã®ãããã¯ãçªãåºãããšããæ©äŒããããŸããã6æéã¯èœã¡çããŠãå¿ èŠã ãšæããã¹ãŠãäŒããããšãã§ããŸãã 人ã ãæºåãã§ããŠããã°ãç§ã¯ã§ããéãã6æé以äžã話ããŸãã
ã¢ã³ãã³ïŒã¯ãŒã¯ã·ã§ããã¯æ¥œããã§ãã æã ã圌ãã¯ããªãããã®ãããªè³ªåãããŸãïŒãããããªããããªã®ïŒããããŠæ°æ¥éããã®ç¹å®ã®ã³ã³ãã€ã©ããã®ç¹å®ã®æ²æšãªã©ãããããã§ãªããããæ©èœããªãã®ããç解ããããšããŸãã ãããŠãã³ã³ãã€ã©ãªã©ã«äœããã®ãšã©ãŒããããŸãã äœããäŒããããã ãã«ãã¹ã¿ãŒã¯ã©ã¹ã«æ¥ãããã«èŠããŸããã代ããã«ãã©ãããä¿®æ£ããäœããæ¹åããã®ã«åœ¹ç«ã€æçãªãã£ãŒãããã¯ãåŸãããŸãã
ã»ã«ã²ã€ïŒäŒè°ã®äž»å¬è ãšã³ãã¥ããã£ãã¥ã¬ãŒã¿ãŒã®èŠ³ç¹ãããã¯ãŒã¯ã·ã§ããã¯ç§ã«ãšã£ãŠéåžžã«äŸ¿å©ã ãšæããŸãããªããªããæã 人ã ã¯ããã«è¡ããåºæ¬çãªç¥èãåŸãŠããããããã«çºå±ããããããå¿çšããããã«ã€ããŠã®å ±åæžãšãšãã«æ»ã£ãŠããããã§ãã æ°äººã®äººãç§ã®ãšããã«æ¥ãŠãããªãã®1人ã«ãã¹ã¿ãŒã¯ã©ã¹ã«è¡ã£ãã圌ãã¯ãã®ãããã¯ã«éåžžã«èå³ããããèªåã§å ±åãããšèšã£ãã
PavelïŒã¢ã³ãã³ãããªãã¯Boostã®æ¬ã®èè ã§ãããããšãèŠããŠããŸããä»ã§ã¯ç¬¬2çããã§ã«åºãŠããŸãã ããªãããããæžãããšã«ããæ¹æ³ãæããŠãã ããïŒ ããšãã°ãç§ã®èãã§ã¯ããã®ãããªè€éãªåœ¢åŒã§èªåã®èããè¡šçŸããããšã¯ãŸã ã§ããŸããã
ã¢ã³ãã³ïŒ Boostã§å¿ããæã§ãããç§ã¯ããã§èª°ããšè°è«ãã誰ããšåªããäœãééã£ãŠããã¹ãããèšã£ãŠããŸããã 圌ãã¯ç§ãçŽåŸãããããã§ãã åºç瀟ã¯ãBoostã«é¢ããæ¬ãæžã人ãæ¢ããŠããŸããã 圌ãã¯Boostã¡ãŒãªã³ã°ãªã¹ããèŠãŠãä»ã®èª°ãããèªä¿¡ãæã£ãŠè©±ããæã掻çºãªåå è ãèŠãŠãç§ãéžãã ããã§ãã
PavelïŒã©ã®ããã«ããŠBoostãžã®è²¢ç®ãå§ããŸãããïŒ ä»äºã§ããããããšã趣å³ã§ããïŒ
AntonïŒããã¯ãBoostã®ä»çµã¿ãç解ã§ããªãã£ãããã§ãã è·å Žã§Boostã䜿çšããŸããã Boostã¯ç§ã®æåã®äœåã®1ã€ã§ãããããã§ã©ã®ããã«é 眮ãããŠããã®ãããªããã®ããã«æ©èœããã®ããŸã£ããããããŸããã§ããã
PaulïŒä»ã®ãšããBoostã¯ã¡ãã£ãšããéæ³ã®ã©ã€ãã©ãªã§ãã
ã¢ã³ãã³ïŒãããŠãç§ã¯èŠãŠãç解ãå§ããããæç¹ã§ãããlexical_cast
ãã£ãšè¯ãã§ããããšã«çªç¶æ°ä»ããŸããã 次ã«ããã®ã¡ã³ãããŒã§ããlexical_cast
Alexeiã«ãã®ããããé©çšããŠã¿ãŸãããã圌ã¯ç§ã«çããŸããã§ããã ç§ã¯åœŒã«ããã«2ã€ãŸãã¯3ã€ã®ããããæžããŸããã
PavelïŒç§ã®èšæ¶ãæ£ãããã°ãããããç©æ¥µçã«å®£äŒããå¿ èŠããããŸãã
ã¢ã³ãã³ïŒãã¡ããã åžžã«ãªãŒãã³ãœãŒã¹ã§ã ãã®çµæãã¡ã³ããã¯å®å
šã«lexical_cast
ããlexical_cast
èšããããã¹ãããšããããããããç§ã«lexical_cast
ã¡ã³ããlexical_cast
ãªãããšãç³ãåºãŸããã ç§ã¯åãã§åæããŸããã ãããŠãBoost.AnyãBoost.Variantãã£ãããšé»è©±ãåããŸããã ãã®ç¬éã圌ã¯èªåã®ã©ã€ãã©ãªãŒãBoost.TypeIndexãBoost.Stacktraceãããã€ãäœæããŸãããããã¯çŸåšæšæºãšããŠåãå
¥ããããŠããŸãã
PavelïŒæ¢è£œã©ã€ãã©ãªã®æ°æ©èœã®ã¢ã€ãã¢ã¯ã©ãã§å ¥æã§ããŸããïŒ
ã¢ã³ãã³ïŒããã€ãã®ããšãããšãã°Boost.DLL-ãã®äººã¯Boostã®ã¡ãŒãªã³ã°ãªã¹ãã«æžããã圌ãã¯ç§ãæã£ãŠããã¯ãŒã«ãªã©ã€ãã©ãªãèŠãŠããšãŠãæããŠè€éã§é¢çœãããšãããããããŠãããšèšã£ãŠããŸãã ç§ã¯åœŒå¥³ãèŠãŠãããããã¯ããã¯ããã¯ãããããç§ã¯ããã欲ããïŒããšèšããŸãããç§ã¯ãã®ç·ã«é£çµ¡ãããã©ã°ã€ã³ãåå¥ã«æ±ãããã®äœåãåãåºãããææ¡ããŸããã 圌ãã¯ãããå¥ã ã«åãåºãããã®äœåãç·æ§èªèº«ãè¡ããããã¯ããã«æ©ãBoostã«å ¥ã£ãããšãå€æããŸããã Stacktraceã§ã¯ãããæç¹ã§StacktraceãååŸããã¡ã«ããºã ããªãããšã«æ°ä»ããŸããã ã¯ããæã ãã£ãããšå±ããŸãã ãããŠããã¯ããã©ã¹ã«ã¯StacktraceãååŸããæ¹æ³ããªãããšã«æ°ã¥ããç¬éã§ãã
PavelïŒç§ã«ã¹ã¿ãã¯ãã¬ãŒã¹ãå°å·ããããã«ã2ã€ã®ç°ãªãäœåã§åæ§ã®ã©ã€ãã©ãªã2åäœæããããã§ãã
ã¢ã³ãã³ïŒããã§ãç§ã¯ãããåã£ãŠè©ŠããããŒã¹ãã®äººã ã«ãããæããŸããã圌ãã¯ããŒãããã¯ããªããšèšããŸããã ããããç§ã¯ããã«2åè©Šã¿ãŸããããããŠãããã«ããŒãžã§ã³ã®1ã€ããããŸãã圌女ã¯ãã¹ãŠãæŽããŠãæ ¹ã匵ããŸããã
PavelïŒã§ããã©ããããããããªãã®ä»äºã§äœ¿ã£ãŠããŸããïŒ
AntonïŒã¯ããYandex.Taxiã¯Boost.Stacktraceãéåžžã«ç©æ¥µçã«äœ¿çšããŠããŸããããšãã°ãåãã¢ã¯ã·ã§ã³ã§éåžžã«åªããŠããŸãã å ±éç¹ã¯ãããŸãã-JSONã§äœæ¥ããŠãã ããã ããæç¹ã§ããŠãŒã¶ãŒã¯ããã«ãªãJSONãã£ãŒã«ãã«ã¢ã¯ã»ã¹ããŸãã äŸå€ãæããã ãã§ããïŒ ãŸãããã®äžã®ã©ããã§ãã£ããããŸãã äžè¬çã«ããã®ãŠãŒã¶ãŒã¯ã©ããåŒã³åºããŸãããïŒ JSONãæäœããããã®ãã¹ãŠã®ã³ãŒãã«ãŠãŒã¶ãŒãããŸããïŒåœŒãå°éããŠããªãæ£ç¢ºãªãã£ãŒã«ãã¯ã©ãã§ããïŒ ã©ã®æç¹ã§åœŒã¯ãããèŠæ±ããŸãããïŒ ãŸããStacktraceã¯ãäœãã©ãã§ééã£ãŠããã®ãããŠãŒã¶ãŒãã©ãã§æ··ä¹±ããã®ããå®å šã«ç解ããã®ã«åœ¹ç«ã¡ãŸãã
PavelïŒå€ãã®å Žåãè·å Žã§äœ¿çšããŠããããŒãžã§ã³ã¯ããªãŒãã³ãœãŒã¹ã®ãã®ãšäžç·ã«åæ£ãå§ããŸããïŒ ãŸãã¯ãæ©èœãåžžã«ããåãããããšããŠããŸããïŒ
ã¢ã³ãã³ïŒæ©èœãããåãããŸãã ãã¡ããããªãŒããŒã·ããã®èš±å¯ãåŸãŠã ãããŠãããã¯éåžžã«æçšãªçžäºäœçšã§ãããšèšããŸãã ããšãã°ãYandex.Taxiã§ã¯ãStacktraceã®toStringïŒïŒé¢æ°ãæ¬ èœããŠããããšã«æ°ä»ããŸããã ããã¯æšæºåææ¡ã«ãããã©ãã§ã説æãããŠããŸãããBoostã«ã¯ãããŸããã 圌女ãããã«ããããã«èŠãããšããäºå®ã«ãããããããç§ã¯Boostããã®æšæºåææ¡å šäœãåŒãè£ããŸããã Boostã«è¿œå ãããŸããã 誰ãã幞ãã§ãã
PavelïŒãšããã§ãã¯ãŒãã³ã°ã°ã«ãŒãã«æ»ããŸãã ãããããC ++ã·ããªã¢ã®åŸãããã«æ¬¡ã®äŒè°ã«è¡ããŸããïŒ
ã¢ã³ãã³ïŒã¯ããææ¥ã®æã40æéã®ãã©ã€ãã§é£è¡æ©ã«ä¹ãããã®åãæ¥ã«ã³ãã«é£ã³ãŸãã äŒè°ã®è°é¡ã§ã¯ãå§å¡äŒå šäœãC ++ 20ã®å€èŠ³ã決å®ããå¿ èŠããããŸãã C ++ 20ã®åã®æåŸã®åæ¢ã¯ããã°ä¿®æ£ã®ã¿ã§ãã ã¢ãžã¥ãŒã«ãšã³ã«ãŒãã³ã¯çŸåšã¢ãžã§ã³ãã«ãããŸãã
PavelïŒé·ãç±å¿ãªè°è«ããã2ã€ã®éèŠãªæ©èœã
ã¢ã³ãã³ïŒã¢ãžã¥ãŒã«ã«ã€ããŠã¯ããã¹ãŠãå€ããå°ãªããæ確ã§ãåãå ¥ããããŠããããã«èŠããŸãããã³ã«ãŒãã³ã§ã¯å®å šã«ç解ã§ããŸããããã®äŒè°ã§ãã³ã«ãŒãã³ã«é¢ãã3çªç®ã®ç«¶åããææ¡ãç»å Žããããã§ãã ããã¯ãCoroutines TSã«ãããã®ãšã¯å®å šã«ç°ãªã£ãŠãããé·æããããŸãã ãã¡ãã匱ããã®ããããŸãã ãããã©ããªããã¯äžæã§ãã ãããŠãã©ã®ãããäžè¬çã«äººã ã¯ã³ã«ãŒãã³ã«ãã¥ãŒãã³ã°ãããŸãã
PavelïŒæ¬¡ã®C ++ãã·ã¢ã®èšç»ã¯ïŒ ããªãããã®å ±åãå¿ èŠã§ããïŒ
ã¢ã³ãã³ïŒã¯ããééããªãã ç§ã¯äœããæãã€ããŸãã ãããããã©ããã«ã€ããŠã
ã»ã«ã²ã€ïŒãŸããå人ãã¡ãã©ããããããšãïŒ ããé æ ®ããŸãã ã¿ãªããããããªãïŒ C ++ãã·ã¢ã§ãäŒãããŸãããã
C ++ Russiaã«ã³ãã¡ã¬ã³ã¹ã§ã®ãã¬ãŒãã³ã°ã«ã€ããŠäžèš
Pavelããã®ã€ã³ã¿ãã¥ãŒã§æ£ããè¿°ã¹ãããã«ããã¬ãŒãã³ã°ãšãã¹ã¿ãŒã¯ã©ã¹ã«ã¯çŽãããªãå©ç¹ããããŸããã¢ãã¬ãŒã¿ãŒã¯ãéåžžã®ã¬ããŒãã®ããã«50å以å ã«ç¶æããããšããã®ã§ã¯ãªããæ°æé以å ã«ãããã¯å šäœã玹ä»ããæ©äŒããããŸãã
ãã£ãããšããã¹ã¿ãŒã¯ã©ã¹ãäŒçµ±ã«ãªãã€ã€ãããŸãã æåã«ãããã2017幎ã«éå¬ããŠãããC ++ Siberiaã§ãã¹ãããŸããã ä»å¹Žã¯3ã€ã®ãã¹ã¿ãŒã¯ã©ã¹ããããŸãã ãã®ã€ã³ã¿ãã¥ãŒã§ã¯ããã§ã«2人ã®ãªãŒããŒã«äŒã£ãŠããŸãã
ãã¹ã¿ãŒã¯ã©ã¹ã¯6æéã§ãçè«æ å ±ãšå®è·µçãªæŒç¿ãçµã¿åãããŸãã å°æ°ã®åå è ãããããã«åå¥ã®äœæ¥ãæäŸããŸãã ããã¯ããŸã第äžã«ããã¡ããå®è·µã§ãã ãã®ããããã¹ãŠã®ãã¹ã¿ãŒã¯ã©ã¹ã«ã¯ãææ°ã®C ++ã³ã³ãã€ã©ãã€ã³ã¹ããŒã«ãããã©ããããããå¿ èŠã§ãã
ãC ++ã§ã®é¢æ°åããã°ã©ãã³ã°ã®é©çšãã¯IvanÄukiÄã«ãã£ãŠè¡ããããC ++éçºè åãã®ç¶ç¶çãªçµ±åããšãã¹ããŒãã§ã¢ãã³ãªC ++ãã¯éçºè ã®Pavel FilonovãšAnton Polukhinã«ãã£ãŠè¡ãããŸãã
Ivanã®ãã¹ã¿ãŒã¯ã©ã¹ã¯ãšã³ããªãŒã¬ãã«ã§ã¯ãªããç¥èŠã®æãããåºãéãããããã«ã«é©ããŠããŸãã Ivanã¯ããªã°ã©ãŒã倧åŠã®ç 究è ã§ãããKActivitiesãContourããŒã¢ã³ãLancelotãªã©ã®KDEãããžã§ã¯ãã®ã¡ã³ãããŒã§ãã ç解ã§ããããã«ãé¢æ°åããã°ã©ãã³ã°ã«ã€ããŠã§ãã 念ã®ãããåå è ã¯ææ°ããŒãžã§ã³ã®GCCããã³Clangãå ¥æããããšããå§ãããŸãã å°ãåŸã§ãå¿ èŠãªãã®ãã¹ãŠãå«ãVirtualBoxã€ã¡ãŒãžãã¬ã€ã¢ãŠãããŸãã ãã¹ã¿ãŒã¯ã©ã¹ã§ã¯ã次ã®ãããã¯ã«ã€ããŠèª¬æããŸããé¢æ°åããã°ã©ãã³ã°ãšã¯ã»ã©é ãSTLãé¢æ°åãªããžã§ã¯ããstd :: invokeããã³monadsãmonadsãmonadsã§ãã ãããŠãããã«ããã€ãã®ã¢ããã
Kaspersky Lab Pavel Filonovã®ãã®éçºè ç 究è ã«ã¯ãã§ã«ç²ŸéããŠããŸãã 圌ã¯ãã³ãã³ãšãã©ãã¹ã§CIãæ§ç¯ããããåå è ãæåŸ ããŸãã ãŸããPavelã¯ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã®æ¹æ³ã«ã€ããŠã説æããŸããå®éã®éšåã§ã¯ãããŒã ãããžã§ã¯ã/ãªãŒãã³ãœãŒã¹ã§ã®äœæ¥ãšã¯ããŒãºããœãŒã¹ã³ãŒãã䜿çšããäœæ¥ãããžã§ã¯ãã®äŸã䜿çšããŠåé¡ã解決ããæ¹æ³ãæããŸãã
åœç¶ãC ++ã§ããã°ã©ã ãäœæããä»»æã®OSãã¡ã€ã³ã³ã³ãã€ã©ã®1ã€ãæ°é®®ãªcmakeïŒCMakeLists.txtã®æ§æãç解ããå¿ èŠããããŸãïŒãgitãpython 3ãpip3ãããã³å€æ°ã®ã¢ã«ãŠã³ããåããã©ããããããæã¡èŸŒãããšãã§ããã¯ãã§ãã ããã«ã€ããŠã®è©³çŽ°ã¯ããµã€ãã®èª¬æã«ãããŸã ã
æåŸã«ã antoshkkaã®ãã¹ã¿ãŒã¯ã©ã¹ã¯é©åãªæé©åã¹ãã«ã«å°å¿µããŠããŸãã 念ã®ããã圌ã¯Yandex.TaxiãµãŒãã¹ã®ã·ãã¢éçºè ãC ++æšæºåå§å¡äŒã®åœéäŒè°ã§ã®WP 21ã®ä»£è¡šè ãèšèªæšæºã®æ¿èªãããææ¡ã®èè ãBoostã®éçºè ãªã©ã§ãã ã¢ã³ãã³ã¯ãææå°æ©ãªæé©åã®ãšã©ãŒãé »ç¹ã«çºçããäŸãæ€èšããåå è ã¯ãæšæºã©ã€ãã©ãªã®ã¢ã«ãŽãªãºã ãšè€éããæ©èœãåããã³ã³ãããMoveã»ãã³ãã£ã¯ã¹ãšãã®äºæããªãåäœããã«ãã¹ã¬ãããæ€èšããŸãã ãã®ã³ãŒã¹ã¯å®çšçã§ãããããGoogleãã³ãããŒã¯ãã³ãããŒã¯çšã®C ++ã©ã€ãã©ãªã䜿çšããŠããã¹ãŠã®ãããã¯ãå®éšçã«èª¿æ»ãããŸãã ãã®ã³ãŒã¹ã§ã¯ãåºæ¬çãªC ++ã®ç¥èãšãC ++ 11ããµããŒãããææ°ããŒãžã§ã³ã®ã³ã³ãã€ã©ã®ã¿ãå¿ èŠã§ãã
äžèšã®ãã¹ãŠã¯ãã¡ãããåç §çšã®ç°¡åãªåç §ã«ãããŸããã çå®ã®å¯äžã®çã®æºã¯ããã¹ãŠã詳现ã§æ確ã«è¿°ã¹ãããŠããäŒè°ãµã€ãã§ãã ããšãã°ãã©ãããããã«å¿ èŠãªãœãããŠã§ã¢ãšãã®ããŒãžã§ã³ãæ確ã«ãªã¹ããããŸãã
C ++ãã·ã¢äŒè°ã¯ã2019幎4æ19ã20æ¥ã«ã¢ã¹ã¯ã¯ã§éå¬ãããŸãã ãã±ããã¯å ¬åŒãŠã§ããµã€ãã§è³Œå ¥ã§ããŸãã éèŠïŒ 3æ1æ¥ããããã±ããã®äŸ¡æ ŒãäžãããŸãã 2æã®äŸ¡æ Œã§è³Œå ¥ããå Žåã¯ãä»ããè³Œå ¥ããå¿ èŠããããŸãã