সংকলন সময়ে স্থিতিশীল সংস্থান ব্যবহার করা হয়। যখন স্থিতিশীল দৃser়তা ব্যর্থ হয়, প্রোগ্রামটি সহজেই সংকলন করে না। এটি বিভিন্ন পরিস্থিতিতে যেমন দরকারী, উদাহরণস্বরূপ, আপনি যদি কোড দ্বারা কিছু কার্যকারিতা প্রয়োগ করেন যা সমালোচনামূলকভাবে unsigned int
অবজেক্টের উপর নির্ভর করে 32 টি বিট রাখে। আপনি এটির মতো একটি স্ট্যাটিক সংস্থান রাখতে পারেন
static_assert(sizeof(unsigned int) * CHAR_BIT == 32);
আপনার কোডে অন্য একটি প্ল্যাটফর্মে, বিভিন্ন আকারের unsigned int
সংকলনটি ব্যর্থ হবে, এইভাবে কোডটির সমস্যাযুক্ত অংশের দিকে বিকাশকারীদের দৃষ্টি আকর্ষণ করবে এবং এটিকে পুনরায় বাস্তবায়ন বা পুনরায় পরীক্ষা করার পরামর্শ দেবে।
অন্য উদাহরণের জন্য, আপনি void *
কোনও ফাংশনে পয়েন্টার হিসাবে কিছু অবিচ্ছেদ্য মান পাস করতে চাইতে পারেন (একটি হ্যাক, তবে সময়ে দরকারী) এবং আপনি নিশ্চিত করতে চান যে ইন্টিগ্রাল মান পয়েন্টারের সাথে খাপ খায়?
int i;
static_assert(sizeof(void *) >= sizeof i);
foo((void *) i);
আপনি সেই char
ধরণের স্বাক্ষরিত সম্পদটি চাইতে পারেন
static_assert(CHAR_MIN < 0);
বা negativeণাত্মক মানগুলির সাথে অবিচ্ছেদ্য বিভাগটি শূন্যের দিকে যায়
static_assert(-5 / 2 == -2);
ইত্যাদি।
স্ট্যাটিক প্রতিবেদনের পরিবর্তে অনেক ক্ষেত্রে রান-টাইম আসারেন্সগুলি ব্যবহার করা যেতে পারে, তবে রান-টাইম এ্যাসারেন্সগুলি কেবল রান-টাইমে কাজ করে এবং যখন নিয়ন্ত্রণের উপর নির্ভর করে তখনই চলে। এই কারণে একটি ব্যর্থ রান-টাইম জোর দেওয়া সুপ্ত থাকতে পারে, বর্ধিত সময়ের জন্য সনাক্ত করা যায় না।
অবশ্যই, স্থির দৃ as়তার মধ্যে প্রকাশটি একটি সংকলন-সময় ধ্রুবক হতে হবে। এটি রান-টাইম মান হতে পারে না। রান-টাইম মানগুলির জন্য আপনার কাছে সাধারণ ব্যবহার ছাড়া আর কোনও পছন্দ নেই assert
।