C++20

C++20, C++17'den sonra C++ programlama dili için ISO/IEC standardının revizyonunun adıdır. Bu standart Şubat 2020'de Prag'daki toplantıda WG21 tarafından sonuçlandırıldı. Taslak 4 Eylül 2020 tarihinde onaylandıktan sonra C++20 standardı şu anda son çalışmalardan geçiyor.

C++20, C++17 ve C++14'ten daha fazla sayıda yeni ve büyük özellikler ekledi. C++20'ye dahil ve kabul edilen değişikliklerin listesinin bir kısmı aşağıda listelenmiştir.

Yeni özellikler

C++20 ile birçok yeni özellik tanıtıldı. Aşağıdaki liste tamamlanmamış olabilir.

Dil

Kütüphane

Kullanımdan kaldırma

Yeni (ve değiştirilmiş) anahtar kelimeler

concept, constinit, consteval, co_await, co_return, co_yield, requires, export ve char8_t.gibi birçok yeni anahtar kelime (ve yeni "uzay gemisi operatörü" (<=>)) eklendi. Ek olarak explicit, C++20'den itibaren ifade alabilecek.

Anahtar kelimelere ek olarak, yeni import ve module dahil olmak üzere özel anlamı olan tanımlayıcılar da var.

C++20'deki yeni nitelikler: [[likely]], [[unlikely]] ve [[no_unique_address]]

Ayrıca bakınız

Kaynakça

  1. ↑ "The Standard". isocpp.org. 19 Eylül 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Eylül 2020.
  2. ↑ "P1000R3: C++ IS schedule" (PDF). 1 Ekim 2019. 14 Kasım 2019 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 13 Şubat 2020.
  3. ↑ "N4817: 2020 Prague Meeting Invitation and Information" (PDF). 6 Kasım 2019. 29 Aralık 2019 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 13 Şubat 2020.
  4. ↑ "Current Status". isocpp.org. 8 Eylül 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Eylül 2020.
  5. ↑ "C++20 Approved -- Herb Sutter". isocpp.org. 11 Eylül 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Eylül 2020.
  6. ↑ "Why does the C++ standard ship every three years?". 13 Temmuz 2019 tarihinde kaynağından arşivlendi.
  7. ↑ "P0592R0: To boldly suggest an overall plan for C++20". 8 Mart 2017 tarihinde kaynağından arşivlendi.
  8. ↑ "P1141R1 - Yet another approach for constrained declarations". 11 Kasım 2018 tarihinde kaynağından arşivlendi.
  9. ↑ "P0606R0: Concepts Are Ready" (PDF). 28 Mart 2017 tarihinde kaynağından (PDF) arşivlendi.
  10. ↑ "N4720: Working Draft, Extensions to C++ for Modules" (PDF). 30 Nisan 2019 tarihinde kaynağından (PDF) arşivlendi.
  11. ↑ "Designated Initialization Wording". 15 Ekim 2017 tarihinde kaynağından arşivlendi.
  12. ↑ "Allow lambda capture [=, this]". 9 Şubat 2019 tarihinde kaynağından arşivlendi.
  13. ↑ "Familiar template syntax for generic lambdas". 21 Kasım 2018 tarihinde kaynağından arşivlendi.
  14. ↑ "Range-based for statements with initializer". 6 Nisan 2017 tarihinde kaynağından arşivlendi.
  15. ↑ "Trip Report: C++ Standards Meeting in Albuquerque, November 2017". There's Waldo! (İngilizce). 20 Kasım 2017. 11 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Aralık 2017.
  16. ↑ "Wording for lambdas in unevaluated contexts" (PDF). 12 Aralık 2017 tarihinde kaynağından (PDF) arşivlendi.
  17. ↑ "Default constructible and assignable stateless lambdas" (PDF). 12 Aralık 2017 tarihinde kaynağından (PDF) arşivlendi.
  18. ↑ "String literals as non-type template parameters" (PDF). 11 Aralık 2017 tarihinde kaynağından (PDF) arşivlendi.
  19. ↑ "Down with typename!". 22 Nisan 2018 tarihinde kaynağından arşivlendi.
  20. ↑ "Language support for empty objects". 17 Nisan 2018 tarihinde kaynağından arşivlendi.
  21. ↑ "Proposed wording for likely and unlikely attributes (Revision 5)". 13 Mayıs 2018 tarihinde kaynağından arşivlendi.
  22. ↑ "explicit(bool)". www.open-std.org. 20 Temmuz 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Kasım 2018.
  23. ↑ "Allowing Virtual Function Calls in Constant Expressions". www.open-std.org. 11 Haziran 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mart 2019.
  24. ↑ "P1330R0 - Changing the active member of a union inside constexpr". 26 Temmuz 2019 tarihinde kaynağından arşivlendi.
  25. ↑ "P1002R0 - Try-catch blocks in constexpr functions" (PDF). 11 Kasım 2018 tarihinde kaynağından (PDF) arşivlendi.
  26. ↑ "P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions". 26 Temmuz 2019 tarihinde kaynağından arşivlendi.
  27. ↑ "P1006R1 - Constexpr in std::pointer_traits" (PDF). 11 Kasım 2018 tarihinde kaynağından (PDF) arşivlendi.
  28. ↑ "P1073R2 - Immediate functions". 26 Ekim 2018 tarihinde kaynağından arşivlendi.
  29. ↑ "P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement". 11 Kasım 2018 tarihinde kaynağından arşivlendi.
  30. ↑ "P0668R4: Revising the C++ memory model". 11 Kasım 2018 tarihinde kaynağından arşivlendi.
  31. ↑ "P1091R1: Extending structured bindings to be more like variable declarations". www.open-std.org. 26 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Şubat 2019.
  32. ↑ "P1091R2: Extending structured bindings to be more like variable declarations". www.open-std.org. 26 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Şubat 2019.
  33. ↑ "N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines" (PDF). 16 Mayıs 2017 tarihinde kaynağından (PDF) arşivlendi.
  34. ↑ "P1099R5: Using Enum". www.open-std.org. 20 Temmuz 2019. 20 Ağustos 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  35. ↑ "P1143R2: Adding the constinit keyword". www.open-std.org. 20 Temmuz 2019. 20 Ağustos 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  36. ↑ "P0896R3" (PDF). 11 Kasım 2018 tarihinde kaynağından (PDF) arşivlendi.
  37. ↑ "Extending make_shared to Support Arrays". 6 Eylül 2017 tarihinde kaynağından arşivlendi.
  38. ↑ "Revising atomic_shared_ptr for C++20". JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP. ISO. 4 Ocak 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Aralık 2018.
  39. ↑ "Utility to convert a pointer to a raw pointer". 20 Şubat 2018 tarihinde kaynağından arşivlendi.
  40. ↑ "Extending <chrono> to Calendars and Time Zones". 13 Mayıs 2018 tarihinde kaynağından arşivlendi.
  41. ↑ "span: bounds-safe views for sequences of objects". 18 Mayıs 2019 tarihinde kaynağından arşivlendi.
  42. ↑ "<version>". 18 Mayıs 2019 tarihinde kaynağından arşivlendi.
  43. ↑ "Bit-casting object representations". www.open-std.org. 18 Ağustos 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Kasım 2018.
  44. ↑ "Integrating feature-test macros into the C++ WD". www.open-std.org. 20 Temmuz 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Kasım 2018.
  45. ↑ "P1032R1 - Misc constexpr bits". 26 Ekim 2018 tarihinde kaynağından arşivlendi.
  46. ↑ "Smart pointer creation with default initialization". 26 Ocak 2019 tarihinde kaynağından arşivlendi.
  47. ↑ "std::map::contains - cppreference.com". en.cppreference.com. 11 Haziran 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Mayıs 2020.
  48. ↑ "P0553R4: Bit operations". www.open-std.org. 20 Temmuz 2019. 20 Temmuz 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  49. ↑ "P0556R3: Integral power-of-2 operations". www.open-std.org. 6 Haziran 2018. 26 Haziran 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2020.
  50. ↑ "P1355R2 Exposing a narrow contract for ceil2". www.open-std.org. 11 Haziran 2019. 5 Ağustos 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2020.
  51. ↑ "On the names of low-level bit manipulation functions" (PDF). www.open-std.org. 11 Şubat 2020. 24 Mart 2020 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 8 Ağustos 2020.
  52. ↑ "P1161R2: Deprecate uses of the comma operator in subscripting expressions". www.open-std.org. 20 Temmuz 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  53. ↑ "P1152R4: Deprecating volatile". www.open-std.org. 20 Temmuz 2019. 23 Haziran 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  54. ↑ "P1143R2: Adding the constinit keyword". www.open-std.org. 20 Temmuz 2019. 20 Ağustos 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2019.
  55. ↑ "C++ keywords - cppreference.com". en.cppreference.com. 19 Mart 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Ağustos 2019.
  56. ↑ "explicit specifier - cppreference.com". en.cppreference.com. 21 Şubat 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Ağustos 2019.
  57. ↑ "attribute specifier sequence(since C++11) - cppreference.com". en.cppreference.com. 5 Temmuz 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Ağustos 2019.

Dış bağlantılar