কম্পিউটার

C++ এ static_assert


static_assert হল একটি ফাংশন যা প্রোগ্রামারদের জন্য প্রোগ্রাম কম্পাইল করার পরে স্ক্রিনে ত্রুটি প্রিন্ট করার জন্য খুব বেশি আউটপুট না নিয়ে কাজে লাগে।

এর আগে C++11 এবং C++14-এ static_assert-এর বিভিন্ন কার্যকারিতা ছিল যার মানে static_assert সংজ্ঞায়িত করার সময় আমাদের নিজস্ব বার্তা লিখতে হবে। যাইহোক, C++ 17 static_assert এ বার্তাটি পাস না করেই আহ্বান করা যেতে পারে।

এটি BOOST_STATIC_ASSERT এর মতো অন্যান্য দাবী লাইব্রেরি ফাংশনের সাথেও সামঞ্জস্যপূর্ণ৷

সিনট্যাক্স

{ স্বয়ংক্রিয় __range=ফর-রেঞ্জ-ইনশিয়ালাইজার; স্বয়ংক্রিয় __begin=begin-expression; স্বয়ংক্রিয় __end=শেষ-অভিব্যক্তি; for(; __begin!=__end; ++__begin){ range-declaration=*__begin; বিবৃতি }}

__begin এবং __end এর প্রকারভেদ ভিন্ন হবে; শুধুমাত্র তুলনা অপারেটর প্রয়োজন. এই পরিবর্তনটি লুপগুলির জন্য বিদ্যমান উপর কোন প্রভাব ফেলে না তবে এটি লাইব্রেরির জন্য আরও বিকল্প সরবরাহ করে। উদাহরণস্বরূপ, এই সামান্য পরিবর্তনটি রেঞ্জ TS (এবং C++20-এ রেঞ্জগুলিকে) রেঞ্জ-ভিত্তিক লুপের সাথে কাজ করার অনুমতি দেয়৷

C++11 রেঞ্জ-ভিত্তিক এর জন্য loops −

এর জন্য (ফর-রেঞ্জ-ডিক্লেয়ারেশন :ফর-রেঞ্জ-ইনিশিয়ালাইজার){ স্টেটমেন্ট;

C++14 স্ট্যান্ডার্ডে, এই ধরনের লুপ এক্সপ্রেশন নিম্নলিখিত কোডের সমতুল্য ছিল -

{ স্বয়ংক্রিয় __range =for-initialiser; জন্য ( স্বয়ংক্রিয় __begin=begin-expresson, __end =end-expression; __begin !=__end; ++__begin ){ for-range-declaration =*__begin; বিবৃতি }}

উদাহরণ

#include নেমস্পেস ব্যবহার করে মান সংরক্ষণ করুন{ static_assert(is_convertible::type, T>::value,"অসঙ্গতিপূর্ণ টাইপ মজা করে ফেরত দেওয়া()"); ত্রুটিগুলি বাদ দিতে //static_assert স্বাক্ষর। জন্য (অটো x :a) x =f();}int main (){ array, 20> a; fillarray(a, []() { return vector{"TutorialsPoint"}; }); রিটার্ন 0;

আউটপুট

………prog.cpp:20:61:hereprog.cpp থেকে প্রয়োজন:10:5:ত্রুটি:স্ট্যাটিক দাবী ব্যর্থ হয়েছে:অসঙ্গতিপূর্ণ টাইপ fun() দ্বারা ফিরে এসেছে 
  1. C++ Enum

  2. বিবৃতি সি++ পরিবর্তন করুন

  3. C++ এ মিতব্যয়ী নম্বর

  4. C++ পেন্টাটোপ নম্বর