
рдпрд╣ рдЖрд▓реЗрдЦ C ++ 11 рдорд╛рдирдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдИ рдмрдЧреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛, рдЬреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдереЗ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП рдереЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдм рд╣рдо C ++ 11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ VS2012 рдмрдЧ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдмреИрд╕рд╛рдЦреА" рд▓рд┐рдЦрдирд╛ рдерд╛ - рддреЛ рдЕрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рднреА рдмрдЧ рддрдп рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ, рдХреБрдЫ VS2012 рд╕реЗ VS2013 рддрдХ рдЪрд▓реЗ рдЧрдП, рдФрд░ рдирдП рдмрдЧ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдЖрдк рдорд╛рдорд▓реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд╛рдПрдВрдЧреЗред
рд╡реИрд░реЗрдбрд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрд░реЗрдбрд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, std :: function рдпрд╛ make_sared рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЕрдм рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИрдВред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ, рдпрд╣ рд╕реАрдорд╛ рдореМрдЬреВрдж рдереА рдФрд░ 5 (рдкрд╛рдВрдЪ) рдереАред
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдХреАрдбрд╝реЗ
рдСрдЯреЛ рдЦреЛ рд╕рдВрд░реЗрдЦрдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ __declspec (рд╕рдВрд░реЗрдЦрд┐рдд (...)) рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ VS2012 рдореЗрдВ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░реИрд╢ рдореЗрдВ рдЧрд▓рдд рдбреЗрдЯрд╛ рд╕реНрдерд╛рди рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред
рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рднреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, VS2012 рдиреЗ рд▓реЗрдЦрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдХреЛрдб:
vector<int> a; decltype(a)::iterator iter = a.end();
рдШреЛрд╖рдгрд╛ рдХреЗ рдХрд╛рд░рдг рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВ
C ++ 11 рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рд╕рд╣реА рдХреЛрдб рдШреЛрд╖рд┐рдд рдХреА рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдХрд╛рд░рдг VS2012 рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реБрдПред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ is_comparable рдкреИрдЯрд░реНрди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
template<typename, typename = true_type> struct is_comparable : public false_type {}; template<typenameT> struct is_comparable<T, typename is_convertible<decltype(declval<T>() > declval<T>()), bool>::type> : public true_type {};
рдпрд╣ VS2012 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдШреЛрд╖рдгрд╛ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдПрдЧрд╛ рдХрд┐ рдЯреА рдХреНрдпрд╛ рд╣реИред
рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб рдмрдЧреНрд╕
рдПрдХ рд▓реИрдВрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╕реНрдЯрдо рдбрд┐рд▓реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рд╕реЗ рдмреВрд▓ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рдЯреВрдЯ рдЧрдпрд╛
рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдмреВрд▓ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
auto stream_deleter = [](ofstream* os) { os->close(); }; unique_ptr<ofstream, decltype(stream_deleter)> p_log(&log_file, stream_deleter); if (!p_log)
Unique_ptr :: рд░реАрд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рджреЛрд╣рд░реА рд╡рд┐рд▓реЛрдкрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд░реАрд╕реЗрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреНрд░рдо рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдЖрджреЗрд╢ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред рдЗрд╕рд╕реЗ рд╡рд╕реНрддреБ рдХрд╛ рджреЛрд╣рд░рд╛ рд╡рд┐рд▓реЛрдкрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
class SelfReferential { unique_ptr<SelfReferential>& _p_self; public: SelfReferential(unique_ptr<SelfReferential>& p) : _p_self(p) {} ~SelfReferential() { _p_self.reset(); } }; unique_ptr<SelfReferential> p; p = unique_ptr<SelfReferential>(new SelfReferential(p)); p.reset();
рд░реАрд╕реЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ SelfReferential рд╡рд┐рдзреНрд╡рдВрд╕рдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдбрдмрд▓ рд╡рд┐рд▓реЛрдкрди рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реАрд╕реЗрдЯ рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВред
share_ptr, рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдФрд░ nullptr
рдЖрдк рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП share_ptr рдХреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ nullptr рдкрд░ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
class Interface { public: virtual void do_stuff() = 0; protected: ~Interface() {} }; class Implementation : public Interface { public: void do_stuff() override {
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХреЛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рдХрд╛рд░ рд▓рдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рддрдп рдХреА рдЧрдИ рдХреАрдбрд╝реЗ
рдЧрд▓рдд рд╕рдВрдЪрд╛рд▓рди is_function рд╣реИ
is_function рдПрдХ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдкрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ:
typedef void f(int, bool, int*, int[], int, int, int, int, int, int, int); is_function<f>::value;
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдгрд╛рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЙрд▓рд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╣реИ
рдЗрд╕реА рддрд░рд╣, is_member_function_pointer рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрд▓рд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ
is_member_pointer, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, __cdecl рд╡рд┐рдзрд┐ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
typedef void (__cdecl A::*ccall_proc)(int, long, double); is_member_pointer<ccall_proc>::value;
is_object рдХреЛ is_function рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рдЙрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЧрд▓рдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛ рдЬрд╛рддреА рд╣реИред
is_scalar рдиреЗ nullptr_t рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирд╛
is_scalar <nullptr_t> рдЧрд▓рддреА рд╕реЗ VS2012 рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ - рдорд╛рдирдХ рдПрдХ рд╕реНрдХреЗрд▓рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ nullptr_t рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
is_pod рдЧрд▓рдд рд╕рдордЭрд╛ рд╢реВрдиреНрдп
is_pod рдЧрд▓рддреА рд╕реЗ VS2012 рдореЗрдВ рд╕рд╣реА рд▓реМрдЯрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢реВрдиреНрдп рдПрдХ
POD рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИis_constructible рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ
is_constructible рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╡рд╛рдкрд╕ рдХрд░рдирд╛:
is_constructible<const string&, string>::value; is_constructible<const string&, string&&>::value;
Alignment_of рдФрд░ align_union рдореЗрдВ рдХреАрдбрд╝реЗ
VS2012 рдореЗрдВ alignment_of рдПрдХ рджреБрд░реНрдЧрдо рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЧрд▓рдд рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдЬреА рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, VS2012 рдореЗрдВ align_union рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
typedef aligned_union<16, string>::type StorageType; sizeof(string);
align_union рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╕рджрд╕реНрдп рд╕рдВрд░реЗрдЦрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рддрд░реНрдХ T1, ..., Tn рдХреЗ рд▓рд┐рдП рд╕рдВрд░реЗрдЦрдг рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ VS2012 рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЖрдо рддреМрд░ рдкрд░ рдЧрд▓рддреА рд╕реЗ рд╢реВрдиреНрдп рд░рд┐рдЯрд░реНрди рд╣реЛрддрд╛ рд╣реИ
рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп, рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ common_type VS2012 рдореЗрдВ рд╢реВрдиреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ:
common_type<int, string>::type;
рдЬрдм рдХрд╕реНрдЯрдо рд░реВрдкрд╛рдВрддрд░рдг рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рднреА рд╢реВрдиреНрдп рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред
struct A {}; struct AWrapper { AWrapper() {} AWrapper(const A&) {} }; common_type<A, AWrapper>::type;
result_of рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдк VS2012 рдореЗрдВ рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдореВрд╡-рдУрдирд▓реА рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрдЧреА:
result_of<Copyable(MoveOnly&&)>::type;
рдХреАрдбрд╝реЗ рдПрд╕рдЯреАрдПрд▓ рдХрдВрдЯреЗрдирд░ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП
minmax_element рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛
рдорд╛рдирдХ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
pair<Iter, Iter> minmax_element(Iter first, Iter last) pair<Iter, Iter> minmax_element(Iter first, Iter last, Compare comp)
рдЙрдиреНрд╣реЗрдВ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП (рдкрд╣рд▓реЗ, рдЕрдВрддрд┐рдо), рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рд╕рдмрд╕реЗ рдмрдбрд╝рд╛, рдпрд╛ make_pair (рдкрд╣рд▓рд╛, рдкрд╣рд▓рд╛) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рд╕реАрдорд╛ рдЦрд╛рд▓реА рд╣реИред VS2012 рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп make_pair (min_element (рдкрд╣рд▓рд╛, рдЕрдВрддрд┐рдо), max_element (рдкрд╣рд▓рд╛, рдЕрдВрддрд┐рдо) рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ
рд╕рднреА рдХрдВрдЯреЗрдирд░ рдореВрд╡ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдПрд▓рд┐рдореЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
struct A { A() {} private: A(A&&); A(const A&); }; deque<A> source; deque<A> target(move(source));
рдЗрд╕реА рддрд░рд╣, рдирдХреНрд╢реЗ рдФрд░ unordered_map рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдореВрд╡ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
map<string, A> m; A& elem = m["abc"];
рд╕рдордХрд╛рд▓рд┐рдХрддрд╛ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ
share_future рднрд╡рд┐рд╖реНрдп рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
VS2012 рдореЗрдВ рдПрдХ рдФрд░ рдмрдЧ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рдЗрд╕ рдмрдЧ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА (рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдПрдХ рдЪрд╛рд▓-рд╣реА рдкреНрд░рдХрд╛рд░ рд╣реИ):
future<int&> f_ref; shared_future<int&> sf_ref(f_ref);
рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡
рдПрдХ рдмрдЧ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдереНрд░реЗрдб рдиреЗ рдмрдирд╛рдпрд╛ рд▓реЗрдХрд┐рди рдХрднреА рднреА at_thread_exit_mutex рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рднреАред
рд╡рд╛рджрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреЗрдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рдПрдХ рдмрдЧ рдХреЗ рдХрд╛рд░рдг, рдРрд╕реА рднрд╡рд┐рд╖реНрдп рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░_рдлреЛрд░реНрд╕ рдФрд░ Wait_until рдлрд╝рдВрдбреНрд╕ рдиреЗ рднрд╡рд┐рд╖реНрдп_рд╕реНрдЯреИрдЯрд╕ :: рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ :: рдЯрд╛рдЗрдордЖрдЙрдЯ рдпрд╛ рднрд╡рд┐рд╖реНрдп_рд╕реНрдЯреИрдЯрд╕ :: рддреИрдпрд╛рд░, рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдмреЗрдХрд╛рд░ рдмрдирд╛ рджрд┐рдпрд╛ред
Future_error рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╕рдВрджреЗрд╢
рддреНрд░реБрдЯрд┐ рдХреЛрдб рдФрд░ рдЙрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЕрд╕рдВрдЧрддрддрд╛ рдХреА рдПрдХ рдмрдЧ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрд╡рд╛рдж "рдЯреВрдЯрд╛ рд╣реБрдЖ рд╡рд╛рджрд╛" рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд╕рдВрджреЗрд╢ рдореЗрдВ рдкрд╛рда "рднрд╡рд┐рд╖реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд" рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╕рд╣реА рдерд╛ред
рдкрд░рдорд╛рдгреБ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рдорд╛рдгреБ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред
рдкрд░рдорд╛рдгреБ рдиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛
VS2012 рдореЗрдВ, рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХрднреА-рдХрднреА рдЕрдЦрдВрдбрддрд╛ рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЛрдб рд╣реЛрддреЗ рдереЗ (рд╡реЗ рд╡рд╣рд╛рдВ рдХрд┐рдП рдЧрдП рдереЗ рдЬрд╣рд╛рдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдирдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдиреЗ рдЬрд┐рддрдирд╛ рдзреАрд░реЗ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред VS2013 рдореЗрдВ рдкрд░рдорд╛рдгреБ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреАрдврд╝реА рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ
рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ, mersenne_twister_engine рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдореБрдЦрд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
Subtract_with_carry_engine рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рдереАред
рд╕реНрд╡рддрдВрддреНрд░_рдмрд┐рдЯреНрд╕_рдПрдВрдЧрд╛рдЗрди рдФрд░ рд╢рдлрд▓_рдСрд░реНрдбрд░_рдПрдиреНрдЬрд┐рди рдиреЗ рдЕрдкрдиреЗ рдЪрд╛рд▓ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдХрднреА-рдХрднреА рдЕрдирдВрдд рд▓реВрдк рдмрди рдЬрд╛рддреЗ рдереЗред
рддрд░реНрдХрд╕рдВрдЧрдд рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб рдХреАрдбрд╝реЗ
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдИ рдХреАрдбрд╝реЗ рдкрд╛рдП рдЧрдП:
рдЖрдк VS2012 рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
ratio_add<ratio<1, 2>, ratio<1, 3>>::num; ratio_add<ratio<1, 2>, ratio<1, 3>>::den;
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрд╢ рдФрд░ рд╣рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
ratio_add<ratio<1, 2>, ratio<1, 3>>::type::den; ratio_add<ratio<1, 2>, ratio<1, 3>>::type::num;
рдПрдХ рдФрд░ рдЧрд▓рддреА рдереА рддреБрд▓рдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
cout << "2/60 < -1/3: " << ratio_less<r2_60, r1_3>::value << endl;
рдЗрд╕ рдкреНрд░рдХрд╛рд░, VS2012 рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рднрд╛рдЬрдХ рд╣рдореЗрд╢рд╛ рдПрдХ рдзрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛред
рдПрдХ рдЕрдиреНрдп рдмрдЧ рдпрд╣ рдерд╛ рдХрд┐ рдЕрдиреБрдкрд╛рдд_ рдЕрд╕рдорд╛рдирддрд╛ рдЕрд╕рдорд╛рдирддрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рд╕рдорд╛рдирддрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ:
ratio_equal<ratio<1, 4>, ratio<4, 16>>::value;
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдмрдЧ рд╣реИред рдЬрдм рдЖрдкрдХрд╛ рдЕрдиреБрдкрд╛рдд <N, D> рд╣реИ, рдпрджрд┐ D рд╢реВрдиреНрдп рд╣реИ рдпрд╛ intmax_t рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдорд╛рдиреНрдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдиреЗ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛:
typedef ratio<1, 0> r_error; cout << r_error::den << endl;
typedef ratio<INTMAX_MIN, 1> r_error2; cout << r_error2::num << endl;
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ static_assert рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдкреНрд░реЙрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╕рдордп рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣, рдХреБрдЫ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдореЗрдВ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ
Tuple_element рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
tuple_element <I, array <T, N >> рдЪреЗрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ I <N рд╣реИ рдФрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред VS2013 рддрдХ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖред
Std :: рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдмреВрд▓ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд░реВрдкрд╛рдВрддрд░рдг
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд░реВрдкрд╛рдВрддрд░рдг VS2012 рдореЗрдВ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦрд╛рд▓реА рдирд╣реАрдВ рдерд╛, рддреЛ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ:
struct Dummy { int _x; }; Dummy get_dummy() { Dummy d = { 10 }; return d; } get_dummy()._x = 20;
рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ () рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ
рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ:
void* p = (void*)0x1;
time_put wchar_t рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдЬрдм wchar_t рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ time_put рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
Stephan Lavavej рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЖрдк VS2013 (рди рдХреЗрд╡рд▓ C ++ 11 рдореЗрдВ) рдмрджрд▓рд╛рд╡ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдирдИ рд╕реА ++ 11 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2013 рдиреЗ рд╕рдВрдХрд▓рдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдХрдИ рдХреАрдбрд╝реЗ рддрдп рдХрд┐рдП, рдЧрд▓рдд рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдФрд░ рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рддрдХред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, VS2013 рдореЗрдВ рдЕрднреА рднреА VS2012 рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдХреБрдЫ рдХреАрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдирдП рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд┐рддрд╛рдм рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣ рдЕрднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк
рдЕрднреА рдХреБрдЫ рдкрдврд╝ рд╕рдХрддреЗ
рд╣реИрдВ ред