рд╕реА ++ 11 рдФрд░ 64-рдмрд┐рдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ

рдХреНрд░реЗрдпрдВрдЧрд╛рдЗрди 3 рдПрд╕рдбреАрдХреЗ рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ
рд╣рдордиреЗ рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рд╡рд┐рд░рд╛рдо рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, C ++ рдмреНрд▓реЙрдЧ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, C ++ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдШрдЯрдирд╛рдПрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ рдЬреЛ 64-рдмрд┐рдЯ рджреБрдирд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд" рд╡рд┐рд╖рдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред рдпрд╣ рд╕рд╣реА 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ C ++ 11 рдорд╛рдирдХ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдХреБрдЫ рд╣реИ рддреЛ) рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЖрдЬ рдХрд╛ рд▓реЗрдЦ рдмрд╕ рдЗрддрдирд╛ рд╣реАред

64-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 64-рдмрд┐рдЯ рдмрди рдЧрдП рд╣реИрдВред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА 64-рдмрд┐рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╡рд╛рд╕реНрддреБ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдорд┐рд▓рддрд╛ рд╣реИред 64-рдмрд┐рдЯ C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдзреНрдпрд╛рди рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рдирдХреА рд╡рдЬрд╣ рд╕реЗ рдПрдХ 32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдХреЛрдб 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рдмрд╛рдж рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ C ++ 11 рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдореЗрдВ рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

64-рдмрд┐рдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рджреБрдирд┐рдпрд╛


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

рд▓реЗрдЦ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 64-рдмрд┐рдЯ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ C ++ 11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реБрдЭрд╛рдП рдЬрд╛рдПрдВрдЧреЗред рддреБрд░рдВрдд, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрд╢рд╛ C ++ 11 рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐-рдореБрдХреНрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреА рд╣реИред рдФрд░ рдирдпрд╛ рдорд╛рдирдХ рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдЬрд┐рдХ рдирдВрдмрд░


рдпрд╣ 4, 32, 0x7FFFFFFF, 0xFFFFFFFF ( рдЕрдзрд┐рдХ ) рдЬреИрд╕реЗ рдирдВрдмрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рдмреБрд░рд╛ рд╣реИ рдЕрдЧрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рд╕реВрдЪрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╣рдореЗрд╢рд╛ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ рд╣реИ:
int **array = (int **)malloc(n * 4); 

рдпрд╣рд╛рдБ, C ++ 11 рдорд╛рдирдХ рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдЬрд┐рдХ рдирдВрдмрд░ рдЦрд░рд╛рдм рд╣реИрдВ рдФрд░ рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рдПред

рдиреЛрдЯред рд╣рд╛рдВ, рдореЙрд▓реЛрдХ () C ++ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ C. рдпрд╣ рдирдП рдСрдкрд░реЗрдЯрд░ рдпрд╛ std :: рд╡реЗрдХреНрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, C ++ 11 рдХрднреА-рдХрднреА рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рдореИрдЬрд┐рдХ рдирдВрдмрд░ рдбрд░ (рдЕрдХреНрд╕рд░ рдЕрдиреБрдЪрд┐рдд) рдХреЗ рдХрд╛рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╕реНрдерд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ (рдмрд╛рдзрд╛) рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдХреЙрдиреНрд╕реНрдЯреНрд░реЗрдХреНрд╕ рддрдВрддреНрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЕрднрд┐рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЬрд╛рдПрдВред рдЙрд╕реА рд╕рдордп, рдЖрдк рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 constexpr int Formula(int a) { constexpr int tmp = a * 2; return tmp + 55; } int n = Formula(1); 

рдлреЙрд░реНрдореВрд▓рд╛ (1) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреАред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред рдЖрдк рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ "рдХреЙрдиреНрд╕реНрдЯреИрдХреНрд╕" рдФрд░ рдЕрдиреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп


рд╣рдо рдкреНрд░рд┐рдВрдЯрдл, рд╕реНрдХреИрдирдл ( рдЕрдзрд┐рдХ ) рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 size_t value = ....; printf("%u", value); 

рдпрд╣ рдХреЛрдб 32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо 64-рдмрд┐рдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЧрд▓рдд рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп C рднрд╛рд╖рд╛ рдХреЗ рдЕрд╡рд╢реЗрд╖ рд╣реИрдВред рдЙрдирдХрд╛ рдиреБрдХрд╕рд╛рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдХрдореА рд╣реИред C ++ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рддрд╛рд░ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЛ рдХреЙрдЙрдЯ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде :: рдкреНрд░рд╛рд░реВрдк рдпрд╛ std :: stringstreamред

C ++ 11 рдХреЗ рд╕рд╛рде, рдЬреАрд╡рди рднреА рдмреЗрд╣рддрд░ рд╣реИред C ++ 11 рдкреИрд░рд╛рдореАрдЯрд░ (рд╡реИрд░рд┐рдПрдбрд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ) рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреЗрд╢ рдХрд┐рдпрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рд┐рдВрдЯрдл рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдРрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
 void printf(const char* s) { while (s && *s) { if (*s=='%' && *++s!='%') throw runtime_error("invalid format: missing arguments"); std::cout << *s++; } } template<typename T, typename... Args> void printf(const char* s, T value, Args... args) { while (s && *s) { if (*s=='%' && *++s!='%') { std::cout << value; return printf(++s, args...); } std::cout << *s++; } } 

рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рддрд░реНрдХ "рдмрд╛рд╣рд░ рдЦреАрдВрдЪрддрд╛ рд╣реИ", рдЬреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЦреБрдж рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╣рддрд╛ рд╣реИред рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд┐рдВрдЯрдл () рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ (рд╕рд░рд▓) рд╕рдВрд╕реНрдХрд░рдг рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрд░реНрдЧреНрд╕ рдкреНрд░рдХрд╛рд░ ... рддрдерд╛рдХрдерд┐рдд "рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрдХ" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкреНрд░рдХрд╛рд░ / рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХреЛрдВ рдХреЛ "рдкреНрд░рд╛рдкреНрдд" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдВрдЯрдл () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реА рд╡рд┐рдзрд┐ (рдкреНрд░рд┐рдВрдЯрдл (рдХрд╛рд╕реНрдЯ рдЪрд╛рд░)) рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдВрдЯрдлрд╝ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдкреНрд░рд┐рдВрдЯрдл (рдХрд╛рд╕реНрдЯ рдЪрд╛рд░ *, рдЯреА рд╡реИрд▓реНрдпреВ, рдЖрд░реНрдЧреНрд╕ ... рдЖрд░реНрдЧреНрд╕)), рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде, рджреВрд╕рд░рд╛ - рдорд╛рди, рдФрд░ рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд╣реЛрдЧрд╛ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЧреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдореВрд╣ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЬрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 printf(++s, args...); 

рдЖрд░реНрдЧреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдореВрд╣ рдХреЛ рдПрдХ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрд░реНрдЧрдиреНрд╕ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдкреНрд░рд┐рдВрдЯрдлрд╝ () рд╡рд┐рдзрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдЧрд▓рдд рдкрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди


рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╢рд╛рдмреНрджрд┐рдХ 1 рдкреНрд░рдХрд╛рд░ int рдХрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ 31 рд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдЯреНрд╕ ( рдЕрдзрд┐рдХ ) рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 ptrdiff_t mask = 1 << bitNum; 

рдпрджрд┐ рдмрд┐рдЯрдиреЗрдо рдорд╛рди 40 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛрдЧрд╛ред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ ( рдЕрдзрд┐рдХ ) рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ред

C ++ 11 рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВред

рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди desync


рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдлрдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП:
 int A(DWORD_PTR x); 

рдФрд░ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ:
 int A(DWORD x); 

32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, DWORD_PTR рдФрд░ DWORD рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, рдпреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ ( рдЕрдзрд┐рдХ ) рд╣реИрдВред рдирддреАрдЬрддрди, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдП рдХреЛ 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдВрдЧреЗред

рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, C ++ 11 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдХреАрд╡рд░реНрдб рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдУрд╡рд░рд░рд╛рдЗрдб рдХреАрд╡рд░реНрдб рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЗрд░рд╛рджреЗ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдУрд╡рд░рд░рд╛рдЗрдб рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рддрднреА рд╕рд╣реА рд╣реИ рдЬрдм рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рд╣реЛред

рдпрд╣ рдХреЛрдб 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рддреНрд░реБрдЯрд┐ рдХреЛ рдмреЗрдЕрд╕рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 struct X { virtual int A(DWORD_PTR) { return 1; } }; struct Y : public X { int A(DWORD x) override { return 2; } }; 

рдорд┐рд╢реНрд░рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд


рдпрд╣ рдПрдХ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╖рдп рд╣реИред рдореИрдВ "64-рдмрд┐рдЯ рд╕рдмрдХ" рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдмреИрдХрд▓реЙрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ: рдорд┐рд╢реНрд░рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд ред

рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
  1. рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдХреНрд╕рд░ рдпрд╣ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдк 'int' рдХреЗ рджреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЧреБрдгрд╛ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднреА 'int' рдЯрд╛рдЗрдк рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЧреБрдгрд╛ рдФрд░ рдЬреЛрдбрд╝ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдлрд┐рд░ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдЦрддрд░рдирд╛рдХ рд╣реИред рдкрд░рд┐рдгрд╛рдо: рдЧрд▓рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдВ, рд╕рджрд╛ рдЪрдХреНрд░ред

рдЖрдЗрдП рдХреБрдЫ рд╕рд░рд▓ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред


 char *p = new char[1024*1024*1024*5]; 

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реНрдореГрддрд┐ рдХреЗ 5 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдо рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "1024 * 1024 * 1024 * 5" рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рдирддреАрдЬрддрди, рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 1073741824 (1 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ) рд╣реЛрдЧреАред рдлрд┐рд░, 'рдирдП' рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдкрд░, рд╕рдВрдЦреНрдпрд╛ 1073741824 рдХрд╛ рдЖрдХрд╛рд░ type_t рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рдпрд╣ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ)ред

рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 unsigned a = 1024, b = 1024, c = 1024, d = 5; size_t n = a * b * c * d; 

рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЯрд╛рдЗрдк 'size_t' рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ UINT_MAX рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм 'рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд' рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реЛрдЧрд╛ред

рд╣рдо рдпрд╣ рд╕рдм 64-рдмрд┐рдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдХрд╣рддреЗ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ 32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ 2 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдмрдбрд╝реЗ рд╕рд░рдгреА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдУрд╡рд░рдлреНрд▓реЛ рдмрд╕ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ 64-рдмрд┐рдЯ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╣реА рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рд╡реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рддреБрд▓рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг


 size_t Count = BigValue; for (unsigned Index = 0; Index < Count; ++Index) { ... } 

рдпрд╣ рдПрдХ рд╕реНрдерд╛рдпреА рд▓реВрдк рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдпрджрд┐ рдЧрдгрдирд╛> UINT_MAXред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ 32-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдХрдо, UINT_MAX рдмрд╛рд░ рд╕реЗ рдХрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдЪрд░ рдХрд╛ рдорд╛рди рд╕реАрдорд╛ [0..UINT_MAX] рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдЗрдВрдбреЗрдХреНрд╕ <рдЧрдгрдирд╛" рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдВрддреБрд╖реНрдЯ рд░рд╣рддреА рд╣реИ, рдЬреЛ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
 string str = .....; unsigned n = str.find("ABC"); if (n != string::npos) 

рдпрд╣ рдХреЛрдб рдЧрд▓рдд рд╣реИред рдлрд╝рдВрдХреНрд╢рди () рдлрд╝рдВрдХреНрд╢рди рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рдорд╛рди рджреЗрддрд╛ рд╣реИ :: size_typeред 32-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ :: size_type рдФрд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд cease рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЦреЛрдЬ () рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдорд╛рди рджреЗрддрд╛ рд╣реИ :: npos, рдЬреЛ 0xFFFFFFFFFFFFFFFFFFui64 рд╣реИред рдпрд╣ рдорд╛рди 0xFFFFFFFFu рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ 32-рдмрд┐рдЯ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╣реИ: 0xFFFFFFFFFF! = 0xFFFFFFFFFFFFFFFFFFFFui64 рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ (n! = рд╕реНрдЯреНрд░рд┐рдВрдЧ :: npos) рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИ!

рдХреНрдпрд╛ C ++ 11 рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?


рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╣рд╛рдВ рдФрд░ рдирд╣реАрдВ рд╣реИред

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдирдпрд╛ рдСрдЯреЛ рдХреАрд╡рд░реНрдб рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рдзреНрдпрд╛рди рд╕реЗ рд╕рдордЭреЗрдВред

рдпрджрд┐ рдЖрдк "рдСрдЯреЛ рдП = ....." рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рдПрдЧреАред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ рдФрд░ рдРрд╕рд╛ рдЧрд▓рдд рдХреЛрдб рди рд▓рд┐рдЦреЗрдВ: "рдСрдЯреЛ рдПрди = 1024 * 1024 * 1024 * 5"ред

рдСрдЯреЛ рдХреАрд╡рд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 auto x = 7; 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡реЗрд░рд┐рдПрдмрд▓ 'x' рдХрд╛ рдкреНрд░рдХрд╛рд░ 'int' рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 auto x = expression; 

рдФрд░ рдЪрд░ 'x тАЩрдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред

рдЕрдкрдиреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб 'рдСрдЯреЛ' рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдпрд╛ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 template<class T> void printall(const vector<T>& v) { for (auto p = v.begin(); p!=v.end(); ++p) cout << *p << "\n"; } 

C ++ 98 рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
 template<class T> void printall(const vector<T>& v) { for (typename vector<T>::const_iterator p = v.begin(); p!=v.end(); ++p) cout << *p << "\n"; } 

C ++ 11 рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдирд╡рд╛рдЪрд╛рд░ред

рдЖрдЗрдП рд╣рдо рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред "1024 * 1024 * 1024 * 5" рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдХрд╛рд░ 'int' рдХреА рд╣реИред рддреЛ рдЕрдм рдХреЗ рд▓рд┐рдП, 'рдСрдЯреЛ' рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд▓реВрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 'рдСрдЯреЛ' рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
 size_t Count = BigValue; for (auto Index = 0; Index < Count; ++Index) 

рдХреНрдпрд╛ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ? рдирд╣реАрдВред рдирдВрдмрд░ 0 рдЯрд╛рдЗрдк 'рдЗрдВрдЯ' рдХрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдЕрдм 'рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд' рдХрд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 'рдЗрдВрдЯ' рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдФрд░ рднреА рдмреБрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рддреЛ рдХреНрдпрд╛ 'рдСрдЯреЛ' рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реИ? рд╣рд╛рдБ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ:
 string str = .....; auto n = str.find("ABC"); if (n != string::npos) 

рдЪрд░ 'n' рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╣реЛрдЧрд╛ :: size_typeред рдЕрдм рд╕рдм рдареАрдХ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдирдпрд╛ рдХреАрд╡рд░реНрдб 'рдСрдЯреЛ' рдХрд╛рдо рдореЗрдВ рдЖрдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдорд┐рд╢реНрд░рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА 'рдСрдЯреЛ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рд░рд╛рдордмрд╛рдг рдирд╣реАрдВред

рд╡реИрд╕реЗ, рдкрд╣рд▓реЗ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЯрд╛рдЗрдк рдЯреНрд░рд┐рдорд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ:
 unsigned n = str.find("ABC"); 

рдЖрдк рдирдП рдЪрд░ рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдХреАрд░реНрдг рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ C рдФрд░ C ++ рднрд╛рд╖рд╛рдПрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреА рд╣реИрдВ:
 int x = 7.3; // ! void f(int); f(7.3); // ! 

рд╣рд╛рд▓рд╛рдБрдХрд┐, C ++ 11 рдЖрд░рдВрднреАрдХрд░рдг рд╕реВрдЪрд┐рдпрд╛рдБ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдХреБрдЪрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ:
 int x0 {7.3}; //compilation error int x1 = {7.3}; //compilation error double d = 7; int x2{d}; //compilation error 

рдпреЗ рдЙрджрд╛рд╣рд░рдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдм рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:
 size_t A = 1; unsigned X = A; unsigned Y(A); unsigned Q = { A }; //compilation error unsigned W { A }; //compilation error 

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
 unsigned n = { str.find("ABC") };   unsigned n{str.find("ABC")}; 

рдпрд╣ рдХреЛрдб 32-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдЧрд╛ рдФрд░ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рди рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред

рдлрд┐рд░, рдпрд╣ рд╕рднреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ред

рдкрддрд╛ рдЕрдВрдХрдЧрдгрд┐рдд


рд╕рдорд╕реНрдпрд╛ рдХрд╛рдлреА рд╣рдж рддрдХ "рдорд┐рд╢реНрд░рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рд╕рдорд╛рди рд╣реИред рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреЙрдЗрдВрдЯрд░реНрд╕ ( рдЕрдзрд┐рдХ ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 float Region::GetCell(int x, int y, int z) const { return array[x + y * Width + z * Width * Height]; } 

рдпрд╣ рдХреЛрдб рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓рд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ RAM рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╕рд╛рдзрди рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ, рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╕рд╛рде рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреЗрдЯрд╕реЗрд▓ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗрд╡рд▓ INT_MAX рддрддреНрд╡реЛрдВ рд╕реЗ рдХрдо рд╡рд╛рд▓реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрд╛рд░рдг рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 32-рдмрд┐рдЯ рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред

рдХреНрдпрд╛ C ++ 11 рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдирд╣реАрдВред

рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдмрджрд▓реЗрдВред


рдХрднреА-рдХрднреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ ( рдЕрдзрд┐рдХ ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдпрд╛ рд╕рд┐рд░реНрдл рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ)ред рдпрд╣ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдЪрд░ ( рдЕрдзрд┐рдХ ) рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдиреЗ рд╕реЗ рдЧрд▓рдд рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рдирдП C ++ 11 рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рд╕реНрдкрд╖реНрдЯ рдХрд╛рд╕реНрдЯ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдЬреЛрдЦрд┐рдо рдФрд░ рдЬреЛрдЦрд┐рдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред

рд╕рдВрдШреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд╛рдо рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХреМрд╢рд▓ рдФрд░ рдЬреНрдЮрд╛рди ( рдЕрдзрд┐рдХ ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд╕рд░рд▓реАрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп


рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдард┐рдирд╛рдИ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ ( рдЕрдзрд┐рдХ )ред

C ++ 11 рдорд╛рдирдХ рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдХреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ред

рдЕрдм рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
рдЖрдХрд╛рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрд░реЗрдЦрдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ ( рдЕрдзрд┐рдХ ) рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдирдП рдХреАрд╡рд░реНрдб 'рд╕рдВрд░реЗрдЦрдг' рдХреЗ C ++ 11 рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдЕрдм рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 //  ,     double alignas(double) unsigned char c[1024]; //   16   alignas(16) char[100]; 

рдПрдХ 'рд╕рдВрд░реЗрдЦрд┐рдд' рдХрдерди рднреА рд╣реИ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрд░реЗрдЦрдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рддрд░реНрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 constexpr int n = alignof(int); 

рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрд╛рд░реНрдп


32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ 64-рдмрд┐рдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдУрд╡рд░рд▓реЛрдб рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рддрд░реНрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реБрджреНрдз рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, type size_t рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ ( рдЕрдзрд┐рдХ ) рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХреЙрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдпрд╣ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЗ рдирдП рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯрд╛рдЗрдк рд╕рд╛рдЗрдЬ рдЪреЗрдХ


рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдХрд╛рд░реНрдпрдХреНрд░рдо рди рд╣реЛред

рдпрд╣ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 assert(sizeof(unsigned) < sizeof(size_t)); assert(sizeof(short) == 2); 

рдмреБрд░рд╛ рддрд░реАрдХрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реИрд╕реЗ рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдпреЗ рдЪреЗрдХ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ рдкреВрд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ рддреЛ рд╕рдВрдХрд▓рди рд░реЛрдХрдирд╛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк _STATIC_ASSERT рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 _STATIC_ASSERT(sizeof(int) == sizeof(long)); 

C ++ 11 рдиреЗ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рд╕рдВрдХрд▓рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд┐рдпрд╛ред рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рджрд╛рд╡реЗ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рд╕реНрдЯреЗрдЯрд┐рдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рд╕рдВрдХрд▓рди-рд╕рдордп рдХрдерди) рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╣реЛрддрд╛ рд╣реИ:
 static_assert(expression, string); 

рд╕рдВрдХрд▓рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЧрдгрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реИ (рдпрд╛рдиреА рдХрдерди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:
 static_assert(sizeof(long)>=8, "64-bit code generation required for this library."); struct S { X m1; Y m2; }; static_assert(sizeof(S)==sizeof(X)+sizeof(Y), "unexpected padding in S"); 

рдирд┐рд╖реНрдХрд░реНрд╖


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

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди


рд▓реЗрдЦ рдиреЗ C ++ 11 рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдардХ рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдирдП рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. рдмрдЬрд░рдиреЗ рд╕реНрдЯреНрд░реЙрд╕реНрдЯреНрд░реБрдкред рд╕реА ++ 11 - рдирдпрд╛ рдЖрдИрдПрд╕рдУ рд╕реА ++ рдорд╛рдирдХ ( рдорд╣рд╛рди рдЕрдиреБрд╡рд╛рдж )ред
  2. рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ред C ++ 11 ред
  3. рд╕реНрдХреЙрдЯ рдореЗрдпрд░реНрд╕ред рдПрдХ рдкреНрд░рднрд╛рд╡реА рд╕реА ++ 11/14 рдирдореВрдирд╛ ред

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


All Articles