рдирдП C ++ рдорд╛рдирдХ рдХреЗ рд╕рд╛рде, рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕реБрдзрд╛рд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдиреЙрдЗрд╕реЗрдкреНрдЯ рд╕рдВрдХрд▓рдХ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХреЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рдлрд╛рдпрджреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реА + + рдХреЛрдб рдХреЛ рдбрд░рд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░рдирд╛
рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ, рдЬреЛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрдб рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реИ:
#include <iostream> class my_class { int i_; public: explicit my_class (int i) : i_(i) {} int get() const { return i_; } }; inline int operator+(const my_class& v1, const my_class& v2) { return v1.get() + v2.get(); } int main() { int res = 0; try { // var0 , // res -1 my_class var0(10); // var1 , // // var0, // res -1 my_class var1(100); // , // res -1 // var1 var0 , // . res = (var1 + var0 > 0 ? 0 : 1); } catch (...) { std::cerr << " "; res = -1; } return res; }
рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдХреЛрдб рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдпрд╣ рдЗрд╕ рдХреЛрдб рдХреА рд╕реВрдЬрди рдХреЗ рдХрд╛рд░рдг рдареАрдХ рд╣реИ рдХрд┐ рдХреБрдЫ рдмрдбрд╝реЗ рдирд┐рдЧрдореЛрдВ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рдо
Google рдкрд░ рдЙрдВрдЧрд▓реА рдирд╣реАрдВ рдЙрдард╛рдПрдВрдЧреЗ) C ++ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдкрд░ред рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╕рдВрд╕реНрдХрд░рдг 4.8 рдХреЗ рдмрд╛рдж рд╕реЗ
рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдирд┐рдпрдо рд╣реИрдВ (рд╣рд╛рдБ, рдЬреАрд╕реАрд╕реА рдЕрдм рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ,
4.8 рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦреЗрдВ)ред
рдЪрд▓реЛ noexcept рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП my_class рд╡рд░реНрдЧ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
class my_class { int i_; public: explicit my_class (int i) noexcept : i_(i) {} int get() const noexcept { return i_; } }; inline int operator+(const my_class& v1, const my_class& v2) noexcept { return v1.get() + v2.get(); } int main() {
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ std :: cerr рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реЗ рдХреЛрдб рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рднреА, рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЧрдИ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдПрдХ рдЖрджрд░реНрд╢ рд╕рдВрдХрд▓рдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рдлреА рдирдИ рд╣реИ, рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдХрднреА-рдХрднреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рднреА рдХреБрдЫ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╡рд░реНрдЧ рдпрд╛ рддрд░реАрдХрд╛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВред
рдпрд╣рд╛рдВ GCC 4.7.2 рдкрд░ рдПрдХ рд╣реА рдХрдХреНрд╖рд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдП рдЧрдП рд╣реИрдВ:
1) рдореВрд▓ рд╡рд░реНрдЧ, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 5280 рдмрд╛рдЗрдЯреНрд╕
2) рдЕрдиреБрдХреВрд▓рди рд╡рд░реНрдЧ, рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 4800 рдмрд╛рдЗрдЯреНрд╕
3) рдЕрдиреБрдХреВрд▓рди рд╡рд░реНрдЧ, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 5280 рдмрд╛рдЗрдЯреНрд╕
4) рдЕрдиреБрдХреВрд▓рди рд╡рд░реНрдЧ, iostream рдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 4800 рдмрд╛рдЗрдЯреНрд╕
5) рдЕрдиреБрдХреВрд▓рди рд╡рд░реНрдЧ, рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп + iostream рдЪрд╛рд▓реВ рд╣реИ, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 5280 рдмрд╛рдЗрдЯреНрд╕
* -Std = c ++ 0x рдзреНрд╡рдЬ рдореЗрдВ C ++ 11 рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ noexcept рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
** рдкреНрд░рдпреЛрдЧ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╕рдордп, рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВред
рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдВрдХрд▓рдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдХрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рддреАрд╕рд░реА, рдЪреМрдереА рдФрд░ рдкрд╛рдБрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рд╣рдорд╛рд░реЗ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП noexcept рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рд╕рд┐рд░реНрдл iostream рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрд╛ред
рд╣рдо рдереЛрдбрд╝рд╛ рдзреЛрдЦрд╛ рджреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рдореБрдЦреНрдп () рд╡рд┐рдзрд┐ рдФрд░ my_class рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛред
рдкрд░рд┐рдгрд╛рдо:
рдореВрд▓ рд╡рд░реНрдЧ, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 6952 рдмрд╛рдЗрдЯреНрд╕
рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреНрд▓рд╛рд╕, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдореБрдЦреНрдп рдмреЙрдбреА, рдЭрдВрдбреЗ -std = c ++ 0x -fno-inline -O2: 5288 рдмрд╛рдЗрдЯреНрд╕
рдХреБрд▓: рддреАрди noexcept рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж 23.9% рдХрд╛ рд▓рд╛рднред
рдорд╛рдирдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рддреНрд╡рд░рдг
C ++ 11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП,
N3050 рдорд╛рдирдХ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдмрдбрд╝реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ (рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдорд╛рдирдХ рд╕рднреА рдкреНрд░рдореБрдЦ
рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ)ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЪрд╛рд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдФрд░ рдЪрд╛рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреА рд╣реИрдВред рдпрд╣ рдХреНрдпрд╛ рдзрдордХреА рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдпрджрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ 1 рдФрд░ 3 рдХреЛ noexcept рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдирдХ рдХрдВрдЯреЗрдирд░ рдзреАрдореА рд╡рд┐рдзрд┐рдпреЛрдВ 2 рдФрд░ 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, std :: рд╡реЗрдХреНрдЯрд░ рдФрд░ std :: deque рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рджреНрд╡рд╛рд░рд╛ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдордВрджреА рдПрдХ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдпрд╛ рдореВрд╡_рдлрд╛рд╕реНрдЯ_рдХреЛрдкреА_рд╕реНрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреАред
рдЕрдиреБрдХреВрд▓рддрд╛
рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рднреА рдкреНрд░рдореБрдЦ рд╕рдВрдХрд▓рдХ рдиреЙрдЗрд╕реЗрдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП noexcept рдХреЗ рдмрдЬрд╛рдп рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ BOOST_NOEXCEPT рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдиреБрдХрд╕рд╛рди
рдорд╛рдирдХ рд░реВрдк рд╕реЗ, noexcept рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рдЕрддрд┐рднрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╕рдорд╛рди рдпрд╛ рдЕрдзрд┐рдХ рдХрдбрд╝реЗ рдЕрдкрд╡рд╛рдж рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЕрд░реНрдерд╛рддреН, рдирд┐рдореНрди рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛:
class base { public: virtual void foo() noexcept {} }; class derived: public base { public: void foo() override { throw 1; } }; int main () { derived d; base *p = &d; p->foo(); }
'' рдПрд░рд░: рд▓реЛрд╕рд░ рдереНрд░реЛ рд╕реНрдкреЗрд╕рд┐рдпрд░ '' рд╡рд░реНрдЪреБрдЕрд▓ рд╢реВрдиреНрдп рд╡реНрдпреБрддреНрдкрдиреНрди :: рдлреВ () '' рдЬреИрд╕реА рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
рддреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ noexcept рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдПрдХрддреНрд░ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред
рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рднреА рддреИрдпрд╛рд░ рд░рд╣реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдУрд╡рд░рд▓реЛрдбреЗрдб рдХреНрдпрд╛ () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЕрдкрд╡рд╛рдж рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдорд╛рдирдХ рд╡рд╛рд▓реЗ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ noexcept рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ:
class my_exception : public std::exception { const char* what() throw() {
рдирд┐рд╖реНрдХрд░реНрд╖
Noexcept рд╕рдВрдХрд▓рдХ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред Noexcept рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдЕрддрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдиреЛрдХреНрд╕реИрдкреНрдЯ рд▓реЗрдмрд▓ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо std :: terminate () рдХрд╣реЗрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдЪрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдЗрдирд┐рдВрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред