C++17 β the biggest traps
Nicolai Josuttis
"ΠΠΎΠΈ ΠΊΠ½ΠΈΠ³ΠΈ - ΡΠ±ΠΎΡΠ½ΠΈΠΊΠΈ ΠΌΠΎΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ"
Π₯ΠΎΡΠΎΡΠΈΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ ΠΎΠΏΠ°ΡΠ°ΡΡΡΡ Π² C++17. Π₯ΠΎΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ std::pmr, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΠ°Π»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°ΠΉΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π²ΡΠΈΡ ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ.
Nicolai Josuttis
"ΠΠΎΠΈ ΠΊΠ½ΠΈΠ³ΠΈ - ΡΠ±ΠΎΡΠ½ΠΈΠΊΠΈ ΠΌΠΎΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ"
Π₯ΠΎΡΠΎΡΠΈΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ ΠΎΠΏΠ°ΡΠ°ΡΡΡΡ Π² C++17. Π₯ΠΎΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ std::pmr, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΠ°Π»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°ΠΉΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π²ΡΠΈΡ ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ.
π¦ ΠΠΉΡΠΈ Π’ΡΠ΄ΡΠΉ π¦₯
C++17 β the biggest traps Nicolai Josuttis "ΠΠΎΠΈ ΠΊΠ½ΠΈΠ³ΠΈ - ΡΠ±ΠΎΡΠ½ΠΈΠΊΠΈ ΠΌΠΎΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ" Π₯ΠΎΡΠΎΡΠΈΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ ΠΎΠΏΠ°ΡΠ°ΡΡΡΡ Π² C++17. Π₯ΠΎΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ std::pmr, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠΠ°Π»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°ΠΉΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π²ΡΠΈΡ
ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ.
ΠΡ ΠΈ ΠΌΠ΅ΠΌΠΎΡ: ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ C++17
Modern C++ allocators
Π ΡΡΠ»Π°Π½ ΠΡΡΡΡΠ½ΡΠ½, Intel
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Ρ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π», ΡΠ΅ΠΉΡΠ°Ρ ΡΠ·Π½Π°Π» Ρ ΠΎΡΡ ΡΡΠΎ-ΡΠΎ.
Π ΡΡΠ»Π°Π½ ΠΡΡΡΡΠ½ΡΠ½, Intel
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Ρ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π», ΡΠ΅ΠΉΡΠ°Ρ ΡΠ·Π½Π°Π» Ρ ΠΎΡΡ ΡΡΠΎ-ΡΠΎ.
π¦ ΠΠΉΡΠΈ Π’ΡΠ΄ΡΠΉ π¦₯
Photo
ΠΠ΅ΠΌΠΎΡ ΡΠ°ΠΊΠΎΠΉ
https://youtu.be/Vwr_iOQlEQk
https://youtu.be/Vwr_iOQlEQk
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ°Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ
ΠΠΈΡΠΈΠ»Π» Π’ΠΈΡ ΠΎΠ½ΠΎΠ², DINS
ΠΠ²ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΡΠΌΠ±Π΅Π΄Π΅Π΄, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΠΎΡΡΡΠ΄Π°.
ΠΠ΅Π»Π°ΠΉΡΠ΅ Π²ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ link time optimization.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΏΠΎΡΠΈΡΠ°ΡΡ. https://habr.com/ru/company/abbyy/blog/248429/
Π‘Π»Π°ΠΉΠ΄Ρ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅.
ΠΠ΅ΠΌΠ° Π² ΡΡΠΎΡ ΡΠ°Π· Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΡΠΎΡΠΈ
ΠΠΈΡΠΈΠ»Π» Π’ΠΈΡ ΠΎΠ½ΠΎΠ², DINS
ΠΠ²ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΡΠΌΠ±Π΅Π΄Π΅Π΄, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΠΎΡΡΡΠ΄Π°.
ΠΠ΅Π»Π°ΠΉΡΠ΅ Π²ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ link time optimization.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΏΠΎΡΠΈΡΠ°ΡΡ. https://habr.com/ru/company/abbyy/blog/248429/
Π‘Π»Π°ΠΉΠ΄Ρ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅.
ΠΠ΅ΠΌΠ° Π² ΡΡΠΎΡ ΡΠ°Π· Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΡΠΎΡΠΈ
Π Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ C++
ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π¨ΠΌΠΈΠ΄Ρ, Artec 3D
ΠΡΠ»ΠΈ ΠΏΠΈΡΠ΅ΡΠ΅ GUI ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π³ΠΎΡΠΎΠ²Ρ (ΠΏΠΎ ΡΠ΅ΡΠΈ) - ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ²ΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ RxCpp.
ΠΠΎΠΊΠ»Π°Π΄ Π±ΡΠ» Π·Π°ΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΈΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Ρ ΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π».
ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π¨ΠΌΠΈΠ΄Ρ, Artec 3D
ΠΡΠ»ΠΈ ΠΏΠΈΡΠ΅ΡΠ΅ GUI ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π³ΠΎΡΠΎΠ²Ρ (ΠΏΠΎ ΡΠ΅ΡΠΈ) - ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ²ΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ RxCpp.
ΠΠΎΠΊΠ»Π°Π΄ Π±ΡΠ» Π·Π°ΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΈΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Ρ ΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π».
Move-only C++ design
Ivan ΔukiΔ, KDE e.V.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΌΠΈ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊΠ°Ρ Π² C++. ΠΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡ (ΠΆΠ΄Ρ Π΄ΠΆΠ²Π° Π³ΠΎΠ΄Π°).
ΠΠΎΡΠΎΠΌ ΠΏΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ move.
Π₯ΠΎΡΠΎΡΠΎ.
ΠΠ°Π»Π΅Π΅ ΡΠ»Π°ΠΉΠ΄Ρ.
Ivan ΔukiΔ, KDE e.V.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΌΠΈ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊΠ°Ρ Π² C++. ΠΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡ (ΠΆΠ΄Ρ Π΄ΠΆΠ²Π° Π³ΠΎΠ΄Π°).
ΠΠΎΡΠΎΠΌ ΠΏΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ move.
Π₯ΠΎΡΠΎΡΠΎ.
ΠΠ°Π»Π΅Π΅ ΡΠ»Π°ΠΉΠ΄Ρ.