рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд░рд╛рдЬ

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

рдХрд╕реМрдЯреА


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛? рдХреНрдпреЛрдВ рд╕рдордЭрд╛рдПрдВред
1ред
int i; int j; (false ? i: j) = 45; 

2ред
 int i; int j; (true ? i: j) = 45; 

3ред
 short i; int j; (true ? i: j) = 45; 

4ред
 return true ? 0 : 1; 

5ред
 true ? return 0 : return 1; 


рдЕрдЧрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдХреНрдпреЛрдВ?
6ред
 std::cout << (false ? 9 : '9') << " " << (true ? 9 : '9'); 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЪрд░ рдП, рдмреА рдФрд░ рд╕реА рдХреЗ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИрдВ? рдХреНрдпреЛрдВ?
7ред
 int a = 1; int b = 1; int c = 1; a = true ? ++b : ++c; 

8. рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк {...} рдФрд░ {...} рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
9. рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░реЗ рдХреНрдпрд╛ рд╣реИрдВ? рдЙрдирдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ?
10. рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рдЖрддреЗ рд╣реИрдВ?

рд╡реНрдпрд╛рдЦреНрдпрд╛


рддреЛ рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ C ++ рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдЦрдбрд╝рд╛ рд╣реИред рдЗрд╕реЗ " рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ " рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ , рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рддреЛ рд╣рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рддрд░рд╣, рдЗрд╕рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рд╢реНрд░реЗрдгреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд░рдЕрд╕рд▓, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд╣рд▓реЗ рд╕рд╛рдд рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реБрдП, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдорд╕реНрддреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рджреЛ рдСрдкрд░реЗрдВрдбреНрд╕ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдЖрдо рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрдВрдЯ рдФрд░ рд╢реЙрд░реНрдЯ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯ рд╣реЛрдЧрд╛ ред
рдЕрдЧрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдП рдФрд░ рдмреА рднреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред
 struct A{ operator int(){ return 1; } }; struct B{ operator int(){ return 3; } }; 

рдпрд╛рдиреА рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рдХрд╛рд░ рд╡рд╣ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдСрдкрд░реЗрдВрдб рдбрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рди рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
 struct C{}; struct D{}; 

рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдЧрд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
 (true ? C() : D()); 

So. рд╣рдордиреЗ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рд╣рд▓ рдХрд┐рдпрд╛ред рдпрд╣ рдореВрд▓реНрдп рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣рд╛рдБ рдирд┐рдореНрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯрд░реНрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкреНрд░рдЪрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ lvalue ред рдЕрдм рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдо рдкрд╣рд▓реЗ 7 рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрддреНрддрд░


1. рдФрд░ 2. - рд╣рд╛рдБред рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lvalue рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред
3. - рдХреЛрдИ рдирд╣реАрдВред рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдпрд╣рд╛рдБ рд╣реЛрддрд╛ рд╣реИред рддреЛ "=" рдЪрд┐рд╣реНрди рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╡рд░реНрдЧ рд╡реНрдпрд╛рдкреНрдд рд╣реИ ред рдФрд░ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рддрд╛ , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
4. - рд╣рд╛рдБред рд╣рдордиреЗ рдпрд╣ рд╕рдм рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
5. - рдирд╣реАрдВред рдпрд╣рд╛рдБ рдкреВрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ C ++ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдирд╣реАрдВ рдЯреВрдЯ рд╕рдХрддрд╛ред
6. рдХрд╛рд░реНрдпрдХреНрд░рдо "57 9" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ 2 рдФрд░ 3 рдХреЗ рдСрдкрд░реЗрдВрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдВрдЯ ред рдПрдХ '9', рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, ASCII рдХреЛрдб 57 рд╣реИред
7. рдЗрд╕ рдкреНрд░рд╢реНрди рдореЗрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреА рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд╣рд┐рдд рд╣реИред рдЕрд░реНрдерд╛рддреН, рдХреЗрд╡рд▓ рдЙрд╕ рдСрдкрд░реЗрдВрдб рд╕реЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдзрд╛рдЧрд╛ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдЧрд░ {...} рдФрд░ {...} рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЪрд░ a, b рдФрд░ c рдХрд╛ рдорд╛рди 2, 2, 1 рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдореИрдВ {...} рдФрд░ {{}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЖрд░рдВрднреАрдХрд░рдг рд╕реВрдЪреА рдореЗрдВред рдЖрдк рдЗрд╕ рддрд░рд╣ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ:
 struct S { S() : if(true) i_(1) else i_(0){} int i_; }; 

рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ:
 struct S { S() : i_(some_condition ? 0 : 1){} int i_; }; 


рд▓рд┐рдВрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рдХрдВрдбреАрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рдЧреИрд░-рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрди рдЯреБрдХрдбрд╝рд╛ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
 int a = 3; int b = 4; int& i; if(some_condition) i = a; else i = b; 

рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХрд▓рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ:
 int& i = (some_condition ? a : b); 


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

 constexpr bool check_if_prime_impl(unsigned int num, unsigned int d) { return (d * d > num) ? true : (num % d == 0) ? false : check_if_prime_impl(num, d + 1); } constexpr bool check_if_prime(unsigned int num) { return (num <= 1) ? false : check_if_prime_impl(num, 2); } 

рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡реИрд╕реЗ, рдЖрдк рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд╕реАрдорд┐рдд рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ {...} рдФрд░ {{}} рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЦрддрд░реЗ


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ
 class String { public: operator const char*(); }; 

рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 const char* s = some_condition ? "abcd" : String("dcba"); 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдСрдкрд░реЗрдВрдб рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХрд╛рд╕реНрдЯ рдЪрд╛рд░ * рд╣реИ ред рд▓реЗрдХрд┐рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ ("dcba") рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ s рдЕрдорд╛рдиреНрдп рдореЗрдореЛрд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдЖрдк рдмрд╛рдж рдореЗрдВ рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ, рдпрд╣ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдореЗрдВ рдЕрд╕рдВрддреЛрд╖ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░рджрд░реНрдж рд╣реЛрдЧрд╛ред

рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ


рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣, рдмрджрд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рджреВрд╕рд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИред
 template <typename T, typename U> struct common_type { typedef decltype(true ? std::declval<T>() : std::declval<U>()) type; }; template<typename T, typename U> struct is_same{ enum { value = false; } }; template<typename T> struct is_same<T, T>{ enum { value = true; } }; int main() { std::cout << is_same<int, common_type<A, B>::type>::value <<std::endl; } 

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

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


All Articles