কম্পিউটার টিউটোরিয়াল

C++-এ static_assert এর ব্যবহার

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

C++11 এবং C++14-এ static_assert-এ কাস্টম বার্তা লিখতে হতো। কিন্তু C++17 থেকে বার্তা ছাড়াও এটি ব্যবহার করা যায়। এটি BOOST_STATIC_ASSERT-এর মতো অন্যান্য লাইব্রেরির সাথে সাংগতিক।

সিনট্যাক্স

static_assert(constant_expression, "error_message"); // C++11/14
static_assert(constant_expression); // C++17 থেকে

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

template <typename T, size_t N, typename F>
void fillArray(array<T, N> &a, F &&f) {
    static_assert(is_convertible<typename result_of<F()>::type, T>::value, 
                  "Incompatible type returned by fun()");
    for (auto &x : a)
        x = f();
}

int main() {
    array<vector<string>, 20> a;
    fillArray(a, []() { return vector<string>{"TutorialsPoint"}; });
    return 0;
}

আউটপুট

prog.cpp:10:5: error: static assertion failed: Incompatible type returned by fun()

উপরের কোডে টেমপ্লেট ফাংশনটি কম্পাইল টাইমে টাইপ চেক করে এবং অমিল পাওয়ার কারণে ত্রুটি দেখায়।

  1. C++ Enum: একটি গাইড

  2. C++-এ Switch Statement: ব্যবহার করার পদ্ধতি

  3. Frugal সংখ্যা চেক করা (C++)

  4. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা