рдлрд╝реАрдЪрд░ рдлреНрд░реАрдЬ C ++ 20ред Coroutines, рдореЙрдбреНрдпреВрд▓ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ

рджреВрд╕рд░реЗ рджрд┐рди рдЕрдореЗрд░рд┐рдХреА рд╢рд╣рд░ рдХреЛрдирд╛ рдореЗрдВ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдорд╛рдирдХреАрдХрд░рдг рд╕рдорд┐рддрд┐ C ++ рдХреА рдмреИрдардХ рдереАред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмреИрдардХ рдирд╣реАрдВ рдереА, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдлреНрд░реАрдЬ рдереА! рдХреЛрдИ рднреА рдЧрдВрднреАрд░ рдирдП рд╡рд┐рдЪрд╛рд░ рдЕрдм рдорд╛рдирдХ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкреВрд░реНрд╡-рд╕реНрд╡реАрдХреГрдд рдЪреАрдЬреЗрдВ рдЬреЛрдбрд╝рдиреЗ, рд╕рд╣реА рдХрдорд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдФрд░ рдЦреБрд░рджрд░рд╛рдкрди рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рдмреИрдардХреЗрдВ рд╢реЗрд╖ рд╣реИрдВред

рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХреЛрд░реВрдЯрд┐рди рдХреЛ C ++ 20 рдореЗрдВ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреЗрдЬ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдЧрд╛, рдХреНрдпрд╛ рдпрд╣ рдХреИрд▓реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдХреНрдпрд╛ рд╡реЗ рдПрд╕рдЯреАрдбреА :: рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдХреНрдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрд╕рдЯреАрдбреА рдХреЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ :: рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреНрдпрд╛ рд╡реЗ рдПрд╕рдЯреАрдбреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ? :: рдлреНрд▓реИрдЯ_рдореИрдк ? рдпрд╣ рд╕рдм рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЖрдкрдХреЛ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред



Coroutines TS


рд╕рдмрд╕реЗ рдЧрд░реНрдо рдмрд╣рд╕ рдХреЛрд░рд╛рдЙрдЯреАрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реБрдИред рд╕рдорд┐рддрд┐ рдХреЛ рдХреЛрд░рдЯрд╛рдЗрди рдХреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рддрдп рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ рдХреЛрд░рд╛рдЙрдЯрд╛рдЗрди рдЯреАрдПрд╕ рдХреЛ рдПрдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдХреЛрдИ рдЕрд▓рдЧ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдПред

рдЪреБрдирд╛рд╡ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рдкреНрд░рддреНрдпреЗрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдкрдиреЗ рдиреБрдХрд╕рд╛рди рдФрд░ рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • N4775 :
    • + рдЗрд╕ рддрдереНрдп рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
    • - рдХреЛрдИ рд╕рдЦреНрдд рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЧрддрд┐рд╢реАрд▓ рдЖрд╡рдВрдЯрди рдирд╣реАрдВ рд╣реЛрдЧрд╛
    • ┬▒ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИ ( P1477R0 рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ)
    • - рдмрджрд╕реВрд░рдд рдХреАрд╡рд░реНрдб co_await рдФрд░ co_yield ( WP21 рд╕реЗ P1485R0 рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ)
    • + 3 рд╕рд╛рд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдЧреВ

  • P1063R2 :
    • + рдХреЛрдИ рдЧрддрд┐рд╢реАрд▓ рдЖрд╡рдВрдЯрди рдирд╣реАрдВ
    • - рдХреЙрд░рдЖрдЙрдЯ рдХреЛ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдкрдХреЛ рдЦреБрдж рдХреЛ рдорд┐рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    • - рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдбрд░рд╛рд╡рдиреЗ рдкреНрд░рдореБрдЦ рдСрдкрд░реЗрдЯрд░ [<-] рдФрд░ [->]
    • - рдХреЛрдИ рдХрд╛рд░реНрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ
    • - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЪреАрдЬреЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ

  • P1430R0 :
    • + рдХреЛрдИ рдЧрддрд┐рд╢реАрд▓ рдЖрд╡рдВрдЯрди рдирд╣реАрдВ
    • - рдХреЙрд░рдЖрдЙрдЯ рдХреЛ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдкрдХреЛ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдЦреБрдж рдХреЛ рдорд┐рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    • + рдХреЛрдИ рдбрд░рд╛рд╡рдирд╛ рдХреАрд╡рд░реНрдб рдирд╣реАрдВ, рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд╣реИ
    • + Corutin рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбрд░рд╛рд╡рдирд╛ coroutine insides рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ (co_await analogues рднреА рдирд╣реАрдВ рджреЗрдЦреЗрдВ, рд╕рдм рдХреБрдЫ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
    • - рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдХрднреА рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рдЧрдИ, рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореВрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    • - рд╡рд░реНрддрдорд╛рди рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдЧрддрд┐рд╢реАрд▓-рдЖрдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╢реНрд░рдо рд▓рд╛рдЧрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
    • N рдХреЙрд▓рдмреИрдХ рдиреВрдбрд▓реНрд╕ рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛


рдмрд╣реБрдд рдмрд╣рд╕ рдХреЗ рдмрд╛рдж, C ++ 20 рдореЗрдВ рдХреЛрдСрдЙрдЯрд┐рди рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ Coroutines TS ( co_ * рдЙрдкрд╕рд░реНрдЧреЛрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдЕрдиреБрдХреВрд▓рди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде) рдореЗрдВ рдереЗред

рдореЙрдбреНрдпреВрд▓


рдореЙрдбреНрдпреВрд▓ рдХреА рдЪрд░реНрдЪрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдк рдХреЗ рд╕рд╛рде рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдереА:
P1441R0 ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: "рдореМрдЬреВрджрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" рд╕реЗ "рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реИрдВред"

рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд┐рддрд┐ рдиреЗ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрдИ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде 15 рд╡рд░реНрд╖реЛрдВ рдХреА рдЪрд░реНрдЪрд╛, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ C ++ 20 рдореЗрдВ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ред

рд╕реНрд╡рд░реВрдк


рд╕рднреА рдХреЛ рдЦреБрд╢рдЦрдмрд░реА! рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрд╕рдореВрд╣ рдореЗрдВ рдХреЛрдИ рдШрд╛рддрдХ рджреЛрд╖ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ C ++ 20 рдореЗрдВ рддрд╛рд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред Std рдХреЛ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣реЛ :: ios , std :: рд▓реЛрдХреЗрд▓ рдФрд░ 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЕрдиреНрдп рднрдпрд╛рд╡рд╣! рдкрд╛рдпрдерди рдореЗрдВ рдЕрдм C ++: P0645R5 рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдП рд╕реНрд╡рд░реВрдкрдг рдФрд░ рдХреИрд▓реЗрдВрдбрд░ рд╕рдордп P1361R0 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рддрд┐рдерд┐рдпрд╛рдВ рдорд╛рдирд╡ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ!

рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ, рдПрдХреНрдЬрд┐рдХреНрдпреВрдЯрд░реНрд╕ рдФрд░ рдЧреБрдг


рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ C ++ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрдирдХрд░реНрддрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдИрдВрдЯ рд╣реИрдВред рдирд┐рд╖реНрдкрд╛рджрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдЧреБрдг P1393R0 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд╛рда рдХреЗрд╡рд▓ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рд╣реИ, рдкреНрд░рд╕реНрддрд╛рд╡ рдиреЗ рдЧрд░реНрдо рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреВрд▓рди рдЕрдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЧреБрдг рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЗрд╡рд▓ C ++ 23 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░, C ++ 20 рдореЗрдВ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░реНрд╕ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдВрдЧреЗред

рдЕрдиреНрдп


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C ++ 20 рдорд╕реМрджреЗ рдореЗрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

  • рдмрд┐рдирд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (рдПрдЧреНрд░реАрдЧреЗрдЯ) рдХреЗ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдм P0960 рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдВрдн рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм std :: make_sared , std :: make_unique , std :: * * :: emplace * рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдореБрдЪреНрдЪрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  • рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк P0811 рдХреЗ рд▓рд┐рдП Lerp рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ
  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп P1001 рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
  • Std :: рд╕реНрдкреИрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдм рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ (рдкреВрд░реЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдорд╛рди) + std :: ssize рдлрд╝рдВрдХреНрд╢рди рдХрдВрдЯреЗрдирд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ P1227 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
  • рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдиреЗ P0920 рдХреА рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реАрдЦрд╛

C ++ 20 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдХреЛрд░ рдЙрдкрд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИрдВ:

  • рдПрд╕рдЯреАрдбреА рдкрд░ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рддреАрдХреНрд╖рд╛ :: рдкрд░рдорд╛рдгреБ; рд╕реЗрдорд╛рдлреЛрд░ рдФрд░ рдмреИрд░рд┐рдпрд░ рдХреНрд▓рд╛рд╕реЗрд╕ P1135
  • std :: flat_map P0429
  • std :: flat_set P1222
  • std :: function_ref P0792
  • <cmath> рдФрд░ <cstdlib> P0533 рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрд╕реНрдЯреИрдХреНрд╕
  • P1206 рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП std :: рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ :: рд╕реЗ <any-container>
  • Std рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ :: * stringstream рдФрд░ transfer рдХрд╕реНрдЯрдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ P0408
  • рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рд╕рдВрдкрд╛рджрди <=> , рдкрд░реНрд╡рддрдорд╛рд▓рд╛, рдмрд╛рдзрд╛

RG21 рдХреЗ рдЧреБрдг


рдкрд╣рд▓реЗ рд╣реА рджрд┐рди, рдХреЛрд░ рдЙрдкрд╕рдореВрд╣ рдиреЗ рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ P0881R3 рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдп рдкреНрд░рд┐рдп рдпреИрдВрдбреЗрдХреНрд╕.рдЯреЗрдХреНрд╕реА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд▓рд┐рдпрд╛ ред LEWG рдЙрдкрд╕рдореВрд╣ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЖрдЧреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдХреЛрд░ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреВрд░реЗ рд╕рдкреНрддрд╛рд╣ рд╕реБрдзрд╛рд░ рдХрд┐рдП рдЧрдП рдФрд░ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкреНрд░рд╕реНрддрд╛рд╡ рдЕрднреА рддрдХ рдорд╕реМрджрд╛ рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реА ++ 20 рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рд╡реЗ рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдШрд╛рддрдХ рджреЛрд╖ рдкрд╛рддреЗ рд╣реИрдВ)ред

рдХреЛрд░рдЯрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП P1485R0 рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рдЖрдпрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ SG1 рдореЗрдВ, рдХреЙрдирдХрд░реА рдиреЗ рдПрдХ рд╕рдорд╡рд░реНрддреА рдЕрдирд╛рд░рдХреНрд╖рд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ P0652R2 рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рд╣рдореЗрдВ рдбрдмрд▓-рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдкрд╛рдардХ рд╡рд┐рд╡рд╛рдж рд╕реЗ рдмрдЪрддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдорд╡рд░реНрддреА рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╣рд╛, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рдВрд╢реЛрдзрди рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдореВрд▓реНрдп рдХреА рд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп P1406R0 рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП zMaZaN4iK рдХреА рдкреЗрд╢рдХрд╢ рдХреЗ рд▓рд┐рдП sth :: hash рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдХрдЯреМрддреА рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рд╕рдорд┐рддрд┐ рдиреЗ рдХреЗрд╡рд▓ std :: pair , std :: tuple , std :: array рдФрд░ std :: basic_string рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЖрд╡рдВрдЯрди рдЫреЛрдбрд╝рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреАред

рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдмрд╕реЗрдЯ рдореЗрдВ, SG6 рдиреЗ P0880R2 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдирдП рд╡рд░реНрдЧреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрдкрдХреЛ рджреЛ рдЯреЗрдореНрдкрд▓реЗрдЯреЛрдВ рдХреЛ рдорд╛рд╣рд┐рд░ рдХрд░рдиреЗ, рд╕рднреА рдирдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдФрд░ рддреБрд▓рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рддрдВрддреНрд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

рд╣рдордиреЗ рдЕрдкрдиреЗ рдЫреЛрдЯреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХреА, рдЬрд┐рд╕рдореЗрдВ рдлреАрдЪрд░ рдкрд░реАрдХреНрд╖рдг рдореИрдХреНрд░реЛ P1424R0 рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд╛рдирдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╣рдордиреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ R0889R1 рдХреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЬрд▓реНрджреА рд╣реА рдЪрд░реНрдЪрд╛ рдХреАред рд╣рдореЗрдВ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рдЬреЛ рдирдП рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЯреВрдЯрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдмрдЬрд╛рдп рдпреЛрдЧ рдХреЗ


C ++ 20 рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ C ++ 17 рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ C ++ 11 C ++ 03 рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдирдИ рддрдХрдиреАрдХреЛрдВ рдФрд░ рдирдП рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛: рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ, рдЕрдиреБрдмрдВрдз, рд░рдВрдЧ, рдореЙрдбреНрдпреВрд▓, рдХреЛрд░рд╛рдЙрдЯрд╛рдЗрди, рдХреЙрдиреНрд╕реНрдЯреНрд░реЗрдк рдХрдВрдЯреЗрдирд░ рдФрд░ рдХреЙрдиреНрд╕реНрдЯреЗрдХреНрд╕рдкреНрд░реЙрдк рдбрд╛рдпрдиреЗрдорд┐рдХ рдмрд╣реБрд░реВрдкрддрд╛, "рдирд┐рдмреЛрд▓рд┐рдбреНрд╕", рдЖрджрд┐ред

рдЬрд▓реНрдж рд╣реА рд╣рдо, рд╡рд░реНрдХрд┐рдВрдЧ рдЧреНрд░реБрдк 21, рдПрдХ рдорд╕реМрджрд╛ C ++ 20 рдорд╛рдирдХ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗ ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рджрд░реНрдж рд╣реИ рдпрд╛ рдЖрдк рдХрд┐рд╕реА рднреА рдирд╡рд╛рдЪрд╛рд░ рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЫреЛрдбрд╝ рджреЗрдВред

рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдорд┐рддрд┐ рдХреА рдЕрдЧрд▓реА рдмреИрдардХ рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдкрд░ C ++ 23 рдХреЗ рд▓рд┐рдП рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк C ++ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ https://stdcpp.ru/ рдкрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ WP21 рдХреЗ рд▓реЛрдЧ рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рд╕рдорд┐рддрд┐ рдХреЛ рдмрддрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдЖрдк рд╣рдорд╕реЗ рд▓рд╛рдЗрд╡ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? RG21 рдХреА рдПрдХ рдЦреБрд▓реА рдмреИрдардХ рдЬрд▓реНрдж рд╣реА рдЖрдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдШрдЯрдирд╛рдУрдВ рдкрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрдиреЗ рд░рд╣реЗрдВ ред рдорд╛рд╕реНрдХреЛ рдореЗрдВ рдЕрдкреНрд░реИрд▓ рд╕реА ++ рд░реВрд╕ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

Source: https://habr.com/ru/post/hi438864/


All Articles