C++17 হলো স্ট্যান্ডার্ড C++ ভাষার সর্বশেষ সংস্করণ। C++11 এবং C++14 ছিল এর আগের সংস্করণ দুটি। বর্তমান সংস্করণটি কোর ভাষাতে অনেক নতুন যোগফল নিয়ে এসেছে, যদিও কিছু পুরানো ফিচার সরিয়ে দিয়েছে। C++17 কে "ফিচার ফুল" বা "ফিচার কমপ্লিট" হিসেবেও জানা হয়।
C++17-এ அறানো কিছু নতুন পরিবর্তন নিচে দেওয়া হলো:
লাইব্রেরি পরিবর্তন - ইউটিলিটি
এটি C++17-এর সবচেয়ে চমৎকার ফিচারগুলির একটি। এটি অন্য লাইব্রেরির ফিচার এবং প্যাটার্নগুলো একত্রিত করে। অনেক সাব-লাইব্রেরি একসাথে মিলিয়ে স্ট্যান্ডার্ডে রূপ নেয়েছে।
C++17-এ ইউটিলিটি লাইব্রেরিতে যোগ করা ফিচারগুলো:
- std::variant
- std::search
- std::string_view
- std::optional
- std::any
লাইব্রেরি পরিবর্তন - ফাইলসিস্টেম
পূর্বের স্ট্যান্ডার্ড লাইব্রেরিগুলো কিছু গুরুত্বপূর্ণ ফিচারের অভাব বোধ করাচ্ছিল। C++ কমিটি লাইব্রেরিগুলোকে উন্নত করল এবং অনেক সিস্টেমকে স্ট্যান্ডার্ডে একত্রিত করল।
C++17-এ ফাইলসিস্টেমে যোগ করা ফিচারগুলো:
- পাথ অবজেক্ট নিয়ে কাজ করা
- কম্পাইলার/লাইব্রেরি সাপোর্ট
- একটি পাথ ট্রাভার্স করা
লাইব্রেরি পরিবর্তন - প্যারালlel অ্যালগরিদম
এটি C++11 এবং C++17-এর পূর্বের ফিচারগুলোর সাথে কিছু নতুন ফিচার যোগ করে। এতে স্ট্যান্ডার্ড লাইব্রেরির জন্য অটো প্যারালেলাইজেশন বা অটো ভেক্টরাইজেশন ফিচার আনলক হয়েছে।
C++17-এ প্যারালল অ্যালগরিদমে যোগ করা ফিচারগুলো:
- অ্যালগরিদম আপডেট
- এক্সিকিউশন পলিসিস
- নতুন অ্যালগরিদম
অ্যাট্রিবিউট
C++17 তিনটি নতুন অ্যাট্রিবিউট যোগ করেছে: [[maybe_unused]], [[fallthrough]] এবং [[nodiscard]]।
সরলীকরণ
C++-এর পূর্ববর্তী সংস্করণগুলোতে কোড সরল করার জন্য অনেক ফিচার ছিল। C++17 নিচের ফিচারগুলো যোগ করে কোড আরও সরল করেছে:
- if/switch-এর জন্য ইনিট স্টেটমেন্ট
- ইনলাইন ভেরিয়েবল
- স্ট্রাকচার্ড বাইন্ডিং ডিক্লেরেশন
সার্চার
C++17 C++ ভাষার পূর্ববর্তী সংস্করণের পুরনো সার্চারগুলো উন্নত করেছে। C++17-এ নতুন সার্চারগুলো হলো: boyer_moore_horspool_searcher, default_searcher এবং boyer_moore_searcher।