ãã³ãã¬ãŒãã®é£è§£ãªãšã©ãŒã¡ãã»ãŒãžãå®å šé§éããæå³ã衚æãã
C++ã®ãã³ãã¬ãŒãã¯ãéç倿 æ§ããŒããªãŒããŒãããæœè±¡åãå®çŸããæåŒ·ã®æŠåšã§ãããããC++17以åã®ãã³ãã¬ãŒãã«ã¯ãåã«å¯Ÿããå¶çŽãçŽæ¥è¡šçŸã§ããªãããšããèŽåœçãªåŒ±ç¹ããããŸãããäžé©åãªåãæž¡ããç¬éãã³ã³ãã€ã©ã¯å éšã®å®è£ æ·±éšããæ°çŸè¡ãæ°åè¡ã«ãåã¶ãæå·ã®ãããªé£è§£ãšã©ãŒããåãåºãããããã°ã極ããŠå°é£ã«ããŠããŸãããC++20 ã§å°å ¥ããããã³ã³ã»ããïŒConceptsïŒããšãrequires ç¯ãã¯ããã³ãã¬ãŒãåŒæ°ãæºããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãç¹æ§ã宣èšçã«å®çŸ©ããé©åœçãªæ©èœã§ããæ¬ç« ã§ã¯ãSFINAEïŒ`std::enable_if`ïŒã®é»éè¡ãå®å šé§éããåããããããšã©ãŒã¡ãã»ãŒãžã颿°ãªãŒããŒããŒãã®èªåéžæããããŠãèªå·±ææžåãããçŸãããžã§ããªã¯ã¹ããå®çŸããæå 端ãã¯ããã¯ãç¿åŸããŸãã
æ°åè¡ã®ã³ã³ãã€ã«ãšã©ãŒã«æ³£ããããæä»£ã¯çµãããŸãããåãæºããã¹ãèŠä»¶ãã³ã³ãã€ã©ã«æã蟌ããconceptãã®åšåãäœéšããŸãã
ã³ã³ã»ããã®å¿èéšã§ãããrequires ç¯ããèªåšã«æããæ»ãå€ã®åãäŸå€ä¿èšŒãŸã§å³å¯ã«å®çŸ©ããææ³ãåŠã³ãŸãã
ã³ã³ã»ããã¯åãªãéçªã§ã¯ãããŸãããããå¶çŽã®å³ããïŒç¹åããïŒé¢æ°ãèªåçã«åªå éžæãããé«åºŠãªãã£ã¹ãããããåŠã³ãŸãã
èªæ©ã»æµã»åŒŸã»é害ç©ãªã©ãç°ãªãåãæ··åšããã€ã³ããŒããŒã²ãŒã ã®è¡çªå€å®ããã³ã³ã»ããã§å ç¢ã«çµ±æ¬ããŸãã
ãã©ãŠã¶ã§JavaScriptãæå¹ã«ãããšããã©ãŠã¶å ã€ã³ããŒããŒã²ãŒã ãšãã¥ã¬ãŒã¿ãã¡ã¢ãªãããå¯èŠåãUMLã¯ã©ã¹å³ã察話å解説ãç解床ã¯ã€ãºãèµ·åããŸãã